我有两个 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"
知道发生了什么吗?
最佳答案
添加额外的 config.autoload_paths
时会出现此类错误在 application.rb
带有模型的子文件夹。
你不需要这样做。所有模型都将通过命名空间自动加载。您只需要使用命名空间的子文件夹组织正确的结构。
如果您将命名空间与模型一起使用,您可以像这样使用生成器:
rails g model membership/review
这将生成正确的命名空间模型并将其保存到
membership
子文件夹。
关于ruby-on-rails - rails : Conflict Between Namespaced and Non-Namespaced Resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095189/