2011-03-16 27 views
1

我是RoR的新手,我正在为用户开发一些基本的基于角色的权限模型。Ruby on Rails:如何以及在哪里添加持久数据到我的数据库?

但是,我希望一些角色在数据库中默认情况下,我在哪里插入相应的行到我的数据库?

到目前为止,我正在做一个单独的迁移,只是“创建!”的各个对象。

但是,如果我运行rake db:migrate && rake db:test:prepare,只有我的开发数据库获得数据填充,而测试数据库只更新其架构并保持为空。

那么,如何/我在哪里插入这样的默认数据到我的数据库?

THX任何帮助

回答

0

我已经找到了一个很好的的宝石,是处理这种场景是seed-fu有趣。

0

我会使用迁移数据形成数据库 - 这是应用程序的基本部分。但是db/seed.rb(rake db:seed)也是一个很好的方法 - 如果你不希望在生产后发生重大变化。


没有办法是完美的,在迁移数据不存储到模式恢复测试数据库,但调用两次相同seed.rb也并不好。不要忘记重新运行时,使逻辑足够的智能,不冲突/

+0

将行添加到带有迁移的数据库可能不是一个好主意,如果您想要使用schema.rb文件重新加载数据库,那些行将不会被添加。种子是首选的方式。如果没有,则每次要创建新安装时都必须重新运行所有迁移。 – nkassis 2011-03-16 15:55:07

+0

是真的,那么混合会很好,导致调用两次'User.create(:login =>'admin')'也不是好东西 – mpapis 2011-03-16 15:58:09

0

我已经使用seed-fu,非常容易使用,并将完全符合您的需求。