我在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表示在操作子类时应自动触发父回调(请参阅“可继承的回调队列”一节)。这在我的代码中没有发生。
有谁知道为什么不呢?
答案 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