我有以下使用单表继承的模型:
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
没有关系,它实际上更多的是关联而不是模型,因为改变了{{1与另一个BasicTest
的关联也应该触发这个方法。
为什么注册到ContainerTest
的方法没有被调用?
答案 0 :(得分:0)
在您的情况下,我认为您需要:dependent => :restrict
,这意味着如果该对象具有任何关联对象,则无法删除该对象。