5

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

Laravel 数据库迁移和种子

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

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

4

3 回答 3

15

I suggest you to use the combination of Fabrication gem and Faker.

Fabrication allows you to write a pattern to build your objects and Faker gives you fake data like names, emails, phone numbers and so on.

This is how a fabricator looks like:

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

In your db/seed.rb you can use it like this:

50.times { Fabricate(:user) }

You will get 50 fake users with random username and "testtest" password :)

于 2013-09-15T15:35:43.937 回答
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"

于 2013-09-15T22:25:46.163 回答
0

种子数据有一个相当有用的 gem,叫做Faker。它在生成的随机数据类型方面有所限制,但我发现它对于名称、地址等简单的事物非常有用。

当然,您必须将其放入循环中并编写查询以自己将其插入数据库。

于 2013-09-15T15:29:14.607 回答