我有兩個factory_girl工廠,contact
和user
。聯繫有一個屬性,dest_user_id
,這是一個外鍵user
,但可以爲NULL。對於該屬性,我想創建一個使用user
工廠的新用戶,然後將其ID分配給dest_user_id
。有沒有辦法做到這一點?在工廠定義中,使用其他工廠的屬性分配屬性
0
A
回答
0
如果與dest_user_id
的外鍵保持與型號名稱相同,則不應改變方法。假設contact
belongs_to
user
和user
要麼has_one
或has_many
contacts
,你可以達到你想要的東西如下:
首先創建工廠:
FactoryGirl.define do
factory :user do
Field 1
Field 2
# etc
end
factory :contact do
# Add only the minimum fields required to create a contact, but not the association
Field 1
Field 2
factory :contact_with_user do
# then you add the association for this inherited factory
# we can use 'user' here as the factory is the same as the association name
user
end
end
end
使用此設置創建一個contact
沒有user
,因此dest_user_id
是NULL
當用戶FactoryGirl.create(:contact)
測試/規格內。
要創建user
和ID分配到dest_user_id
田野上contact
你可以使用下列內容:
@user = FactoryGirl.create(:user)
@contact = FactoryGirl.create(:contact_with_user, :user => @user)
這種方法最大的靈活性,你可以使用或不使用用戶創建一個contact
,和你只有在您需要進行特定測試時,纔可以將user.id
傳遞到聯繫人模型。如果你打電話FactoryGirl.create(:contact_with_user)
然後既是contact
和user
將自動創建,但你不會有,你有當您使用FactoryGirl.create(:contact_with_user, :user => @user)
相關問題
- 1. 工廠女孩的屬性
- 2. FactoryGirl在工廠中設置updated_at屬性
- 3. 請求工廠通用方法屬性
- 4. 從父母工廠女孩工廠訪問子屬性
- 5. Rspec:在其他工廠中使用工廠
- 6. 工廠模式,按屬性選擇
- 7. 將屬性添加到抽象工廠
- 8. DDD工廠和域對象屬性
- 9. 在Spring.Net中使用屬性作爲工廠方法
- 10. 工廠女孩使用多個替代屬性
- 11. FactoryGirl RSpec創建工廠對象時沒有方法錯誤,其中工廠設置了該對象的屬性
- 12. 如何使用產品工廠內用戶工廠的login_id值作爲所有者屬性值
- 13. 工廠女孩和rails中的嵌套屬性3
- 14. 工廠女孩用字符串屬性鍵而不是符號?
- 15. 如何在工廠女孩更新嵌套屬性值
- 16. 工廠或構造函數 - 在哪裏設置對象屬性?
- 17. 工廠女孩 - belongs_to的對象的覆蓋屬性
- 18. 是否需要tomcat的server.xml的工廠屬性?
- 19. 如何將EntityCollection屬性分配給其他屬性?
- 20. 在Ninject中使用工廠方法,我不能將屬性添加到
- 21. 使用工廠
- 22. 使用從其他屬性分配的默認屬性初始化模型
- 23. 訪問某些屬性的工廠女孩問題
- 24. 將類屬性作爲參數的方法工廠
- 25. Azure的數據工廠.NET集成:某些屬性爲null
- 26. 工廠女孩保留字屬性的關聯
- 27. 工廠初始化與產生額外的屬性注入
- 28. 驗證():屬性「工廠」不是元素「的ServiceHost」
- 29. AngularJS觀察工廠對象的屬性 - 意外行爲
- 30. Castle Windsor奇怪的行爲屬性注入和工廠方法
。這兩個型號之間的關聯的名稱超過
dest_user_id
轉讓的控制,描述了dest_user_id?爲了清晰起見,請張貼模型細節。 – nmott 2012-03-17 12:41:24我加了一個事實,即dest_user_id是一個外鍵。這有什麼關係?對於user的任何屬性,問題都是一樣的。 – FrontierPsycho 2012-03-17 14:29:50
只是想確保你沒有改變關係名稱和外鍵名稱,因爲它會稍微改變潛在的解決方案。可能的做法如下。 – nmott 2012-03-18 12:55:24