2014-04-08 18 views
3

我有以下工廠:滑軌factory_girl create_list構建同一對象

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

當我打電話FactoryGirl.create_list(:產品,3)在數據庫中插入相同的產物僅具有不同的ID。我想爲每個產品提供不同的名稱,說明和價格。

你們知道這個問題的解決方案嗎?謝謝!

回答

5

name,descriptionprice被視爲靜態屬性; 。這意味着爲什麼數據是用於Product每個實例相同的值被計算一次(當工廠被裝載),並且將不會改變(以及原因

相反,包中的值的塊:

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

每個工廠運行時,該塊被執行 - 在法克爾的情況下,這意味着它會產生一個新的值

+0

是的,這確實是偉大的答案,我應該已經意識到。如果我將它包裝在一個塊中,它將被執行每個產品。謝謝! –