Rails 3.1:after_remove关联回调未触发

时间:2011-12-06 04:12:14

标签: ruby-on-rails ruby ruby-on-rails-3.1 callback

我有以下使用单表继承的模型:

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_subtestsContainerTest之间的关联,就会调用BasicTest方法,但这种情况不会发生。如果我用:before_add代替:before_remove,则会发出回调,但这没用。

我意识到我可以把它放到BasicTest模型中,但它与BasicTest没有关系,它实际上更多的是关联而不是模型,因为改变了{{1与另一个BasicTest的关联也应该触发这个方法。

为什么注册到ContainerTest的方法没有被调用?

1 个答案:

答案 0 :(得分:0)

在您的情况下,我认为您需要:dependent => :restrict,这意味着如果该对象具有任何关联对象,则无法删除该对象。