1

Rails 2.3 には、独自の名前空間のコントローラーを持つ Rails エンジンがありますが、メイン アプリのモデルを使用します。

ただし、 ActiveRecord::Base#to_json メソッドのデフォルトの動作をオーバーライドしたいのですが、モデルが Engine から使用されている場合のみです。

したがって、エンジンコントローラーでは、次のようなことを行うのが合理的ですか...

category.questions.each do |qst|
  # override ActiveRecord::Base#to_json somehow on the qst instance 
end

...概念的に合理的である場合、実際にそのようなことを行うにはどうすればよいでしょうか?

合理的でない場合、メインアプリではなくエンジンのみで ActiveRecord::Base#to_json をオーバーライドする最良の方法は何ですか?

ありがとう、

ポール

4

1 に答える 1

0

あなたはこれを使用して行うことができますinstance_eval

category.questions.each do |qst|
  qst.instance_eval do
    # do something here
  end
end

しかし、これが実際にあなたがやりたいことに対して適切な戦略であるかどうかはわかりません。より簡単なアプローチは、別の名前のメソッドを作成to_jsonし、エンジンの代わりにそれを使用することです。

于 2012-11-06T15:30:44.707 に答える