感谢rails autosave
功能,我知道会自动保存关联。
有时候我会遇到某些相关模型没有保存但父母是保存的情况,即使我在交易中这样做。
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 :(得分:0)
尝试这样的事情:
class Conversation
has_many :participations
has_many :messages
validates_associated :participations, :messages
end
这也应验证嵌套关系。如果任何子项中存在验证错误,则父验证也将失败。
您可以查看有关此方法的文档here。