1

私は最新のrailsとrubyを備えたRailsエンジンを持っています。

私はcmsと呼ばれるコントローラーを持っており、updateと呼ばれるアクションがあります。この更新アクションを使用して、さまざまなテーブルを更新します。たとえば、settingというテーブルがあります。この手法は通常のRailsアプリでは正常に機能しますが、私のRailsエンジンでは次のエラーがスローされます。

NameError (uninitialized constant Setting):

設定というモデルがありますが、なぜエラーが発生するのですか?

4

1 に答える 1

2

ファイルの命名は、オートロードが機能するために重要です。命名規則は、アプリとエンジンの両方で同じです。実際、アプリケーションエンジンです。

したがって、my_rails_app/app/models/cms/setting.rbと同等ですmy_engine/app/models/cms/setting.rb

それでも問題が解決しない場合は、明示的な名前空間で定数にアクセスしてみてくださいCms::Setting

次のようにして、適切な名前空間から定数を動的に取得できます。

Cms.const_get(table.capitalize)

ただし、ハッカーはあなたに何かを送って定数にアクセスできるため、このアプローチには注意してください。

于 2012-10-12T10:17:24.960 に答える