【问题标题】:How access ActiveRecord::AutosaveAssociation.marked_for_destruction? from within parent model如何访问 ActiveRecord::AutosaveAssociation.marked_for_destruction?从父模型中
【发布时间】:2009-08-28 00:32:19
【问题描述】:

我有一个模型 Person,具有以下关联:

has_many :distributions

accepts_nested_attributes_for :distributions, :allow_destroy => true

validate :distributions_must_total_100

自定义验证当前在不应该失败的情况下失败 - 当一些验证已被标记为销毁时 - 因为它们仍然显示在属性“分布”中(在内存中,更不用说数据库中的内容)个人及其分布已保存。

我想在我的验证器中使用ActiveRecord::AutosaveAssociation.marked_for_destruction? 来忽略即将被销毁的分布。

  1. 如何使用该方法?不太确定 Distribution(您的正常 Rails 模型)与该类的关系是什么。

  2. 这是一个可怕的不洁黑客吗?只是感觉有点脏,这是解决问题的最精确的方法。

我确实在调试器中逐步检查了 ActiveRecord 源代码,以确认记录实际上已标记为销毁(即不是 Javascript 或表单构建器错误)。

【问题讨论】:

    标签: ruby-on-rails activerecord nested-attributes


    【解决方案1】:

    事实证明,您只需在 Distribution 实例上调用 marked_for_destruction?,它就可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多