rails autosave associations使用save引发异常

时间:2017-03-01 23:47:58

标签: ruby-on-rails

感谢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

我这次交易/自动保存有问题吗?如果我在消息中添加验证,我不能确定父母也不会保存吗?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

class Conversation
  has_many :participations
  has_many :messages

  validates_associated :participations, :messages
end

这也应验证嵌套关系。如果任何子项中存在验证错误,则父验证也将失败。

您可以查看有关此方法的文档here