有没有办法自动生成种子数据文件并创建种子数据,就像您在下面链接中的 Laravel 中看到的那样?
我已经看到在另一个应用程序的 Rails 的 db 文件夹下创建了一些带有时间戳的文件,其中包含种子数据。
创建这个的好方法是什么?
有没有办法自动生成种子数据文件并创建种子数据,就像您在下面链接中的 Laravel 中看到的那样?
我已经看到在另一个应用程序的 Rails 的 db 文件夹下创建了一些带有时间戳的文件,其中包含种子数据。
创建这个的好方法是什么?
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 :)
如果您正在寻找创建真正的种子数据(例如状态查找表),您可以在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"
种子数据有一个相当有用的 gem,叫做Faker。它在生成的随机数据类型方面有所限制,但我发现它对于名称、地址等简单的事物非常有用。
当然,您必须将其放入循环中并编写查询以自己将其插入数据库。