1

私は2つのReviewモデルを持っています。1 つ目は として名前空間が付けられMembership::Review、2 つ目は名前空間が付けられず、Review. 名前空間のないモデルを呼び出すと、Rails は代わりに名前空間のあるモデルを検索しようとします。例えば:

library.includes(:reviews)

このエラーが表示されます:

Expected C:/sites/shelflives/app/models/membership/review.rb to define Review

私のLibraryモデルでは、Review関連付けは適切に行われています。

has_one :review

モデルを明示的に指定しても、同じエラーが発生します。

has_one :review, :class_name => "Review"

何が起こっているのか分かりますか?

4

1 に答える 1

2

この種のエラーは、モデルconfig.autoload_pathsapplication.rbwith サブフォルダーにエクストラを追加すると発生します。

これを行う必要はありません。すべてのモデルは名前空間を通じて自動的にロードされます。名前空間のサブフォルダーを使用して正しい構造を編成する必要があるだけです。

モデルで名前空間を使用する場合、次のようにジェネレーターを使用できます。

rails g model membership/review

これにより、正しい名前空間モデルが生成され、membershipサブフォルダーに保存されます。

于 2013-04-19T03:18:13.837 に答える