是否有可能做到这一点?
如果是这样,你怎么能做到?
注意:FactoryBot 以前被命名为 FactoryGirl
您需要做的就是添加require 'factory_bot_rails'
到db/seeds.rb
文件中。这将使您可以访问您的工厂。
注意:Gem 以前称为 FactoryGirlRails
FactoryGirl 的维护者 Josh Clayton建议不要在种子文件中使用 FactoryGirl。他建议改用普通的 ActiveRecord。
(这个答案适用于 rails 3.0.7)
我发现问题在于你如何设置Gemfile
- 你需要按照以下方式做一些事情
gem 'factory_girl'
group :test do
gem 'factory_girl_rails'
end
我们发现factory_girl_rails
了环境之外的问题:test
,我们没有设法深入了解(可能与 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
您可以将以下代码插入到您的 spec_helper.rb 中,它会生成一些您想要的数据实例(在本例中为 yaml 文件中的“产品”):
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
在 Rails 5.2.6 中,您可以在db/seeds.rb
文件中创建工厂。include FactoryBot::Syntax::Methods
在文件顶部添加seeds.rb
。在这条线之下,你可以创建你的工厂——即user1 = create(:user)
.