ruby on rails - rails - ¿Cómo puedo usar Factory Girl en db/seeds?
factorybot create (5)
¿Es posible hacer esto?
Si es así, ¿cómo puedes hacerlo?
(Esta respuesta funciona en rieles 3.0.7)
Descubrí que el problema es cómo configura el Gemfile
: debe hacer algo en la línea de
gem ''factory_girl''
group :test do
gem ''factory_girl_rails''
end
Encontramos problemas al tener factory_girl_rails
fuera del :test
entorno de :test
, que no logramos llegar al fondo (¿tal vez algo que ver con la forma en que los rieles hacen el almacenamiento en caché de clase?)
Una vez hecho esto, me gusta cargar datos de una biblioteca en lib, algo como ...
require ''factory_girl''
require ''spec/factories/user_factory''
module Seeds
class SampleUsers
def self.run
u = Factory(:user)
end
end
Y luego ejecutando este método desde db:seed
usando
Seeds::SampleUsers.run
Josh Clayton, el mantenedor de FactoryGirl, recomienda no usar FactoryGirl en su archivo de semillas . Él sugiere usar ActiveRecord simple en su lugar.
Puede insertar el siguiente código en su spec_helper.rb, y crear algunas instancias de los datos que desea (en este caso, "productos" del archivo 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
Todo lo que necesita hacer es agregar require ''factory_girl_rails''
al archivo db/seeds.rb
. Esto le dará acceso a sus fábricas.
en db / seeds.rb
require ''factory_girl_rails''
10.times do
FactoryGirl.create :user
end