是否可以这样做?
如果是这样,你怎么能这样做?
答案 0 :(得分:26)
您需要做的就是将require 'factory_girl_rails'
添加到db/seeds.rb
文件中。这将使您可以访问您的工厂。
答案 1 :(得分:14)
(这个答案适用于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
答案 2 :(得分:14)
FactoryGirl的维护者Josh Clayton,recommends against using FactoryGirl in your seeds file。他建议使用普通的ActiveRecord。
答案 3 :(得分:12)
require 'factory_girl_rails'
10.times do
FactoryGirl.create :user
end
答案 4 :(得分:2)
您可以将以下代码插入到spec_helper.rb中,它会创建所需数据的某些实例(在本例中为yaml文件中的“products”):
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