名前空間に含まれる Rails 3.2.8 モデルがあります。以前は、名前空間がテーブル名がどのように見えるかに自動的に展開されていたと確信しています。たとえば、Module::Model は、データベースでは module_model になります。
なんらかの理由で、これがレールアプリケーションでは起こらないという問題があります。移行、モデル、およびコントローラーはすべて名前空間に存在しますが、モデルがテーブルを探すときに、テーブルのプレフィックスを無視し、データベースが見つからないと文句を言います。
これが例です
module Magazine
def self.table_name_prefix
'magazine_'
end
end
module Magazine
class Paper < ActiveRecord::Base
#some stuff here
end
end
Magazine::Paper でクエリを実行すると、「maganzine_paper」ではなく「paper」というテーブルが検索されます。これにより、アプリケーション全体で奇妙な動作が発生します。また、モデルで self.table_name を使用してテーブル名を手動で設定しようとしましたが、これはモデルが正しいテーブルを見つけることしかできません。コメントなどの紙の下に何かをネストすると、ルートは存在しないルートを探します。
これがルートの中にあるものです。コメントは /magazine/papers/1/comments に送られるべきですが、/magazine/comments というルートを探します
namespace :magazine do
resources :papers do
resources :comments
end
end
何が起こっている?
アップデート:
わかりましたので、それを理解しましたが、それを無視するか、何が原因かを確認する必要があるかどうかはわかりません。エンジン名はマガジンで、エンジン内にマガジンというモデルの名前空間を作成しますが、これが問題を引き起こします。Rails はエンジン名に似た名前空間名を持つことはできませんか?