У меня есть модель, человек, со следующей ассоциацией:Как получить доступ к ActiveRecord :: AutosaveAssociation.marked_for_destruction? внутри родительской модели
has_many :distributions
accepts_nested_attributes_for :distributions, :allow_destroy => true
validate :distributions_must_total_100
Обычаем проверка в настоящее время терпит неудачу, когда он не должен - когда некоторые из валидаций были отмечены для разрушения - потому что они все еще отображаются в атрибуте «распределения» (в памяти, неважно, что находится в БД) до того, как Человек и его Распределения будут сохранены.
Я хотел бы использовать ActiveRecord::AutosaveAssociation.marked_for_destruction?
в моем валидаторе, чтобы игнорировать дистрибутивы, которые должны быть уничтожены.
Как достичь этого метода? Не совсем уверен, что отношение дистрибутива (ваша нормальная модель Rails) относится к этому классу.
Это ужасный нечистый хак? Он чувствует себя немного грязным, и это самое точное решение проблемы.
Я сделал шаг через исходный код ActiveRecord в отладчике, чтобы подтвердить, что записи на самом деле отмечены для уничтожения (т.е. не Javascript или форма строитель ошибка).