app/models/concerns
とapp/controllers/concerns
のファイルを、名前空間の代わりにグローバル名前空間に直接ロードします。モジュールをapp/*/*/some_module.rbから直接グローバル名前空間にロード
SomeConcern
をapp/models/concerns/some_concern.rb
に定義した場合、Concerns::SomeConcern
ではなく、SomeConcern
が使用可能になります。
同じ方法で動作するapp
の別のサブディレクトリにconcerns
フォルダを追加したいと思います。より具体的には:をapp/serializers/concerns/some_serializer_concern.rb
に定義したいと思いますが、モジュールをConcerns::SomeSerializerConcern
と定義すると現在のところ動作しています。
私はのconfig/application.rbに次の行があります:自動ロードとeager_load上
config.paths.add "app/serializers/concerns", eager_load: true
This excellent postが、これは「レール自体は、私が何をしたいのか達成し、それはdoesnの方法であることを信じるように私を導きましたこのシナリオではうまくいきません。私はRails 4.2.6を使用しています。何か案は?
あなたのモジュールの場合は、名前空間にロードされます名前空間に:
私が行うために必要なすべては
config/application.rb
でeager_load_pathsに直接パスを追加しました。あなたがそれをルートに置くには、それをルートに移動します。 'app/concerns'のようなものを設定することができ、期待どおりに動作するはずです。 – tadman@tadmanそれはうまくいくだろうが、私は 'models'と' controllers'のフォルダ構造と一貫して、シリアライザ固有の問題を 'シリアライザ'の下に保つことを望んでいます...またはプレゼンタの懸念や承認者の懸念権限がある人なら、それほど価値のないものではありませんが、Rails自体が名前空間ルールをこのパターンに従って明示的に破っているので、比較的簡単な方法があると思いました。 – Dane