如何访问ActiveRecord :: AutosaveAssociation.marked_for_destruction?在父模型中

时间:2009-08-28 00:32:20

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

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

has_many :distributions

accepts_nested_attributes_for :distributions, :allow_destroy => true

validate :distributions_must_total_100

自定义验证当前不应该 - 当一些验证被标记为销毁时 - 因为它们仍然显示在属性“distributions”中(在内存中,不要介意DB中的内容)保存人员及其分布。

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

  1. 我如何达到该方法?不太确定Distribution(你的普通Rails模型)与该类之间的关系。

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

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

1 个答案:

答案 0 :(得分:0)

事实证明,您只需在分发实例上调用marked_for_destruction?,就可以了。