我有一個用戶模型屬於一個組。組必須具有唯一的名稱屬性。用戶工廠和組工廠定義爲:通過factory_girl協會查找或創建記錄
Factory.define :user do |f|
f.association :group, :factory => :group
# ...
end
Factory.define :group do |f|
f.name "default"
end
當創建第一個用戶時,也會創建一個新組。當我嘗試創建第二個用戶時,它失敗了,因爲它想再次創建相同的組。
有沒有辦法告訴factory_girl關聯方法先查找現有記錄?
注意:我確實試圖定義一個方法來處理這個問題,但後來我無法使用f.association。我希望能夠用它在黃瓜的場景是這樣的:
Given the following user exists:
| Email | Group |
| [email protected] | Name: mygroup |
,如果關聯在工廠定義中才能做到這一點。
工作得很好,謝謝。在Rails 4中,首選的方法是:'Group.find_or_create_by(name:name)' – migu
Rails 4中的首選方法實際上是'Group.where(name:name).first_or_create'。 – Laurens
這應該可能是被接受的答案。開車去......這是你的解決方案。 – ocodo