2015-07-14 11 views
8

Jeśli mam to fabryczne:FactoryGirl create_list wprost w wielu wartości

factory :product, class: Product do 
    name  { Faker::Commerce.product_name } 
    description { Faker::Lorem.paragraph } 
    price  { Faker::Number.number(3) } 
end 

mogę używać create_list aby utworzyć 2 produkty tak:

FactoryGirl.create_list(:product, 2) 

ale chcę przekazać w domyślnych zarówno mój produkty, chciałbym przypuszczać coś teoretycznie jak to ?:

prods = [{:name => "Product 1"},{:name => "Product 2"}] 
FactoryGirl.create_list(:product, prods.count, prods) 

Szukałem na chwilę i około nnot znaleźć odpowiedź na to, czy jest to możliwe za pomocą eleganckiego rozwiązania, takiego jak create_list?

Powodem, dla którego chciałbym, aby to rozwiązanie było, ponieważ :product jest jednym z wielu skojarzeń dziecka z modelem nadrzędnym. Chciałbym konfigurowalny sposób, w jaki mogłem wygenerować fabrykę modelu macierzystego za pomocą pojedynczego polecenia FactoryGirl.create i przekazać wszystkie wartości, które chciałbym dla skojarzeń dziecka (poprzez wykorzystanie cech FactoryGirl i ignorowanie bloków). Mam nadzieję, że ma to sens. Mogę pokazać tutaj kilka kodu, ale uważam, że zapewnia to wystarczającą ilość kontekstu?

Odpowiedz

4

Można generowania listy siebie:

data = [{:name => "Product 1"},{:name => "Product 2"}] 
products = data.map { |p| FactoryGirl.create(:product, p) } 

Który powinien zostawiają cię z szerokim wachlarzem produktów.

+0

To działało dzięki @Manuel – joshweir