如何在db / seeds中使用Factory Girl?

时间:2011-03-21 18:59:12

标签: ruby-on-rails factory-bot seed

是否可以这样做?

如果是这样,你怎么能这样做?

5 个答案:

答案 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)

db / seeds.rb中的

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