【发布时间】:2014-03-15 13:56:59
【问题描述】:
在我的模型中
has_one :order, dependent: :destroy
accepts_nested_attributes_for :order, reject_if: lambda { |order| order[:description].blank? }, allow_destroy: true
由于某种原因,虽然拒绝_if 被测试并返回 true(我用调试器检查过),但嵌套顺序并没有被破坏。
网上有很多关于这种现象的文章,但我找不到解决办法。
有人知道如何解决这个问题吗?
【问题讨论】:
-
模型是否触发
after_destroy回调?如果是这样,您可以在该回调中销毁相关的order。 -
在没有描述的情况下只销毁订单,而不是对象本身!
-
accepts_nested_attributes_for不是这样工作的。如果模型具有description,您的代码允许模型设置/更新order关系。如果您设置_destroy属性,它还允许销毁order。根据docs,如果您尝试破坏order关系,它将忽略reject_if。转到您的代码:您是否尝试在Order模型中设置validates_presence_of :description? -
我不明白:对于has_many,这就像我现在使用的一样,但是对于has_one,这不起作用? has_one 不被认为是“最多有一个”?
-
你的
Order模型是什么样的?
标签: ruby-on-rails activerecord ruby-on-rails-3.2