Как я могу использовать Factory Girl в дб / семена? - PullRequest
24 голосов
/ 21 марта 2011

Возможно ли это сделать?

Если это так, как вы можете это сделать?

Ответы [ 5 ]

26 голосов
/ 13 сентября 2011

Все, что вам нужно сделать, это добавить require 'factory_girl_rails' в файл db/seeds.rb.Это даст вам доступ к вашим фабрикам.

14 голосов
/ 14 ноября 2013

Джош Клэйтон, сопровождающий FactoryGirl, рекомендует не использовать FactoryGirl в вашем файле с семенами . Вместо этого он предлагает использовать обычный ActiveRecord.

14 голосов
/ 11 мая 2011

(Этот ответ работает в рельсах 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
12 голосов
/ 15 июня 2013

в дБ / семен.рб

require 'factory_girl_rails'

10.times do
  FactoryGirl.create :user
end
2 голосов
/ 04 апреля 2011

Вы можете вставить следующий код в ваш spec_helper.rb, и он сделает несколько экземпляров нужных вам данных (в данном случае «products» из файла 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
...