为什么我的父回调没有被解雇?

时间:2012-09-22 00:46:04

标签: ruby-on-rails ruby-on-rails-3 single-table-inheritance

我在rails应用程序中有以下一对模型。它们是使用single table inheritance实现的。

class Parent < ActiveRecord::Base
  before_save :callback

  private 
  def callback
    puts "executing parent callback"
  end
end

class Child < Parent
  before_save :callback

  private 
  def callback
    puts "executing child callback"
  end
end

我希望每当我保存记录时父母的callback和孩子的callback都会触发,但我不能让这种行为发挥作用。目前,当我保存一个Child时,只运行该类中定义的回调。

Rails docs表示在操作子类时应自动触发父回调(请参阅“可继承的回调队列”一节)。这在我的代码中没有发生。

有谁知道为什么不呢?

1 个答案:

答案 0 :(得分:2)

你试过这样做吗?方法名称会相互覆盖。

class Parent < ActiveRecord::Base
  before_save :parent_callback

  private 
  def parent_callback
    puts "executing parent callback"
  end
end

class Child < Parent
  before_save :child_callback

  private 
  def child_callback
    puts "executing child callback"
  end
end