2017-03-01 9 views
0

レールのおかげでautosaveフィーチャー私は関連が自動的に保存されることを知っています。rails autosave associationsは、保存で例外を発生させます

時には、私はトランザクション内でそれをやっているにもかかわらず、特定の関連モデルが保存されないが、親がある状況があります。

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で確認できます。

関連する問題