Rails:Namespaced和非命名空间资源之间的冲突

时间:2013-04-19 00:16:35

标签: ruby-on-rails namespaces associations

我有两个Review型号。第一个命名空间为Membership::Review,第二个未命名空间为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"

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:2)

当您在config.autoload_paths中使用模型的子文件夹添加额外的application.rb时会发生此类错误。

您不需要这样做。所有模型都将自动加载命名空间。您只需要使用命名空间的子文件夹组织正确的结构。

如果您使用名称空间与模型,您可以使用这样的生成器:

rails g model membership/review

这将生成正确的命名空间模型,并将其保存到membership子文件夹。