2017-03-01 70 views
0

感謝rails autosave功能我知道關聯會自動保存。rails自動保存關聯引發異常並保存

有時候我有一些情況,某些相關模型沒有保存,但是父母是,即使我在交易中做。

class Conversation 
    has_many :participations 
    has_many :messages 
end 

class Participation 
    belongs_to :conversation 
end 

class Message 
    belongs_to :conversation 
    belongs_to :participation 
end 


conversation = Conversation.new 
sender = conversation.participations.build(foo) 
receiver = conversation.participations.build(bar) 
message = conversation.messages.build(sender: sender) 


Conversation.transaction do 
    conversation.save! 
end 

我在做這個事務/自動保存有問題嗎?如果我添加驗證的消息,我不能確定父母不會保存以及?

回答

0

嘗試這樣:

class Conversation 
    has_many :participations 
    has_many :messages 

    validates_associated :participations, :messages 
end 

這也應該驗證嵌套關係。如果任何孩子有驗證錯誤,父驗證也會失敗。

您可以查看有關此方法here的文檔。