2013-04-19 184 views
1

我有兩個Review模型。第一個命名空間爲Membership::Review,第二個命名空間爲Review。當我在非名稱空間模型上進行調用時,Rails會嘗試查找名稱空間的模型,而不是。例如: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" 

有什麼想法發生了什麼?

+0

錯誤是否在rails控制檯中的Membership :: Review.new命令中持續存在? – ole

+0

是的,它仍然存在'Membership :: Review.new'。 – nullnullnull

+0

您是否在config.autoload_paths中添加了用於在應用程序配置中加載模型的額外路徑? – ole

回答

2

當您在模型的子文件夾中添加application.rb中的額外config.autoload_paths時,會發生此類錯誤。

您不需要這樣做。所有模型都將通過名稱空間自動加載。您只需要使用名稱空間的子文件夾來組織正確的結構。

如果您在使用配車型的命名空間,你可以使用發電機像這樣:

rails g model membership/review 

,將產生正確的名稱空間的模式,並將其保存到membership子文件夾中。