2017-06-22 7 views
1

を生成します他のクラスの名前空間の一部であり、uninitialized constantというエラーをスローします。すなわち、実行時に、私はこのの名前空間のクラス参照は、私はそうのようなクラスの名前空間を自由に使用することを作ってるんだ、私のRailsアプリで初期化されていない一定のエラー

uninitialized constant Person::Shared::Property 

のようなエラーが出る基本的には、インタプリタはこの機能Shared::Property::HasOne::Updateを見て、それがPerson名前空間にありますようにそれを処理し、そうでない場合は、その後、エラーを投げています。

私は明示的に関数がそうObject::Shared::Property::HasOne::Updateのように、Object名前空間であるが、あらゆる場所にObject::を追加すると迷惑と醜いであることを示すことによって、問題を回避することができます。誰かが知っているよりよい解決策がありますか?私のクラス名/名前空間のすべてを書き直すことができません。

私は問題の一部がPerson::Sharedが有効な名前空間であり、したがってRubyインタプリタが、私はほんの始まりにPersonを追加するのを忘れようShared::Property:: ...参照の治療を開始することであると想像。

フィードバックに感謝します。

+2

':: Shared ... 'を追加してみてください – Iceman

+0

https://stackoverflow.com/questions/32853661/namespaced-model-in-rails-generating-nameerror-uninitialized-constant?rq=1 – Iceman

+0

[ NameErrorを生成するRailsの名前空間モデル:初期化されていない定数](https://stackoverflow.com/questions/32853661/namespaced-model-in-rails-generating-nameerror-uninitialized-constant) – Iceman

答えて

1

答えを見つけました:::をクラス参照の前に追加することで、ルビインタープリタにトップレベルの名前空間を見せてもらうようにしました。すなわちObject::Shared::Property::HasOne::Updateの代わりに私は::Shared::Property::HasOne::Updateを行うことができます。

初期化されていない定数問題についてはかなりの数の質問がありますが、私が見つけたすべての質問は特定のケースで囲まれているので、この回答を見つけることができませんでした。 と思われるこれは重複した質問で、もう1つは見つかりませんでしたが、私が間違っている場合に備えてここにこのQAを掲載します。

This questionが正しい答えにつながった。

関連する問題