У меня есть следующие модели, использующие наследование одной таблицы:
class Test < ActiveRecord::Base
end
class ContainerTest < Test
has_many :subtests, :class_name => 'Test', :foreign_key => 'container_test_id', :before_remove => :delete_if_without_subtests
def delete_if_without_subtests(task)
...
end
class BasicTest < Test
end
Я ожидаю, что метод delete_if_without_subtests
будет вызываться всякий раз, когда устраняется связь между ContainerTest
и BasicTest
, но этого не происходит. Если я заменю :before_add
вместо :before_remove
, будет выполнен обратный вызов, но это бесполезно.
Я понимаю, что мог бы поместить это в модель BasicTest
, но это не относится к BasicTest
s, и это действительно больше связано с ассоциацией, чем с моделью, поскольку изменение ассоциации BasicTest
на другой ContainerTest
должен также вызвать этот метод.
Почему метод, зарегистрированный на :before_remove
, не вызывается?