1

ベース アプリで Rails 3 エンジンのモデルとコントローラーをオーバーライドできるようにしたいと考えています。

$LOAD_PATH を調べると、エンジンの 'app/{models,controllers}' が見つかりましたが、エンジンのモデルまたはコントローラー ファイルを明示的に要求することはできません。 app/controllers/enginename/*) およびプレーン エンジン)。

では、エンジンのモデル/コントローラーをベースアプリにコピーせずに Rails 3 で拡張する最良の方法は何ですか?


基本的に、それはロードオーダーの問題です。したがって、エンジンからモデルを明示的に要求する場合、すべて問題ありませんが、より良い方法があることを願っています。

4

1 に答える 1

6

それで、実際に戻ってドキュメントを書きました。答えは、次のいずれかを使用して Controller クラスと Model クラスを Open Class することです。

  • クラス#eval_class
  • ActiveSupport::懸念

詳細はこちら http://guides.rubyonrails.org/engines.html#overriding-models-and-controllers

(編集。「edgeguides」サブドメインから「guides」サブドメインに変更)

于 2012-08-26T04:17:31.310 に答える