我有兩個型號:如何在一次交易中保存相關模型?
class Customer < ActiveRecord::Base
has_many :contacts
end
class Contact < ActiveRecord::Base
belongs_to :customer
validates :customer, presence: true
end
然後,在我的控制,我會希望能夠創造出既 「一」掃:
@customer = Customer.new
@customer.contacts.build
@customer.save
此,失敗(不幸的翻譯對,它轉化爲 類似:聯繫人:客戶不能爲空)
@customer.errors.messages #=> :contacts=>["translation missing: en.activerecord.errors.models.customer.attributes.contacts.invalid"]}
檢查時。模型的確,@customer.contacts.first.customer
是nil
。不知何故,這是有道理的,因爲@customer
尚未保存 ,因此沒有id
。
如何建立這樣的關聯模型,然後保存/創建它們,使:
- 如果一個非法,無模型被持久,
- 錯誤可以在一個列表中,而讀出然後結合所有型號的 錯誤消息,
- ,並保持我的代碼簡潔?
我的第一個想法 - 如果您始終通過客戶創建聯繫人,請不要驗證客戶的存在。或者至少在那裏陳述一條if語句,並排除客戶是新記錄時的情況。 – Almaron
在關係聲明中增加':inverse_of'。 – j03w
@ j03w:inverse_of確實擺脫了驗證:這是解決方案。你可以補充說,所以我可以將其標記爲解決方案? – berkes