这个能做到吗?
如果可以,你如何做到呢?
注意:FactoryBot 以前叫做 FactoryGirl。
这个能做到吗?
如果可以,你如何做到呢?
注意:FactoryBot 以前叫做 FactoryGirl。
db/seeds.rb
文件中添加require 'factory_bot_rails'
,即可访问你的工厂。FactoryGirl的维护者Josh Clayton建议不要在种子文件中使用FactoryGirl,而是建议使用普通的ActiveRecord。
(这个答案适用于 Rails 3.0.7)
我发现问题在于如何设置Gemfile
- 你需要按以下方式进行操作:
gem 'factory_girl'
group :test do
gem 'factory_girl_rails'
end
我们发现在:test
环境之外使用了factory_girl_rails
,但我们没有找到问题的根本原因(可能与Rails类缓存的方式有关?)
一旦解决了这个问题,我想实际从lib库加载数据,类似于...
require 'factory_girl'
require 'spec/factories/user_factory'
module Seeds
class SampleUsers
def self.run
u = Factory(:user)
end
end
然后可以通过在 db:seed
中运行该方法来执行此方法。
Seeds::SampleUsers.run
在 db/seeds.rb 文件中
require 'factory_girl_rails'
10.times do
FactoryGirl.create :user
end
db/seeds.rb
文件中创建工厂。在seeds.rb
文件的顶部添加include FactoryBot::Syntax::Methods
。在该行下面,你可以创建工厂,例如:user1 = create(:user)
。# db/seeds.rb
include FactoryBot::Syntax::Methods
user1 = create(:user)
seeds_file = File.join(Rails.root, 'db', 'seeds.yml')
config = YAML::load_file(seeds_file)
config["products"].each do |product|
FactoryGirl.create(:product, product) if !Product.find_by_name(product['name'])
end