Rails如何创建数据模式种子数据

时间:2013-09-15 15:11:11

标签: ruby-on-rails ruby

有没有办法自动生成种子数据文件并创建种子数据,就像您在下面链接中的Laravel中看到的一样?

Laravel Database Migrations & Seed

我在另一个带有时间戳的应用上看到了一些在Rails的db文件夹下创建的带时间戳的文件,其中包含种子数据。

创建这个的好方法是什么?

3 个答案:

答案 0 :(得分:15)

我建议您使用Fabrication gem和Faker的组合。

Fabrication允许您编写模式来构建对象,Faker会为您提供虚假数据,如姓名,电子邮件,电话号码等。

这就是制造商的样子:

Fabricator(:user) do
  username { Faker::Internet.user_name }
  name { Faker::Name.first_name }
  surname { Faker::Name.last_name }
  password { "testtest" }
  password_confirmation { |attrs| attrs[:password] }
end

db/seed.rb中,您可以像这样使用它:

50.times { Fabricate(:user) }

您将获得50个随机用户名和“testtest”密码的假用户:)

答案 1 :(得分:1)

如果您要创建真实的种子数据(例如,针对状态查找表),您可以在db\seeds.rb文件中添加以下内容。

# Statuses
# Will insert 5 rows in statuses table
['Not Started', 'In Progress', 'On Hold', 'Complete', 'Not Applicable'].each do |status|
Status.find_or_create_by(status: status)
end

然后,从您的控制台:  $ rake db:seed

要在运行测试时创建数据,您可以使用: load "#{Rails.root}/db/seeds.rb"

答案 2 :(得分:0)

Theres是一个非常有用的种子数据宝石,名为Faker。它在它生成的随机数据类型方面有所限制,但我发现它对名称,地址等简单的东西非常有用。

当然你必须将它放在一个循环中并编写查询以将其自己插入到数据库中。