2013-04-19 183 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子文件夹中。