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