1

Railsアプリに次のモデルのペアがあります。これらは、単一テーブル継承を使用して実装されます。

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この動作を機能させることができません。現時点では、子を保存すると、そのクラスで定義されているコールバックのみが実行されます。

Railsのドキュメントによると、子クラスが操作されると、親のコールバックが自動的にトリガーされる必要があります(「継承可能なコールバックキュー」のセクションを参照)。これは私のコードでは発生していません。

誰かがなぜそうしないのか知っていますか?

4

1 に答える 1

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
于 2012-09-22T01:03:50.803 に答える