我有两个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"
知道发生了什么事吗?
答案 0 :(得分:2)
当您在config.autoload_paths
中使用模型的子文件夹添加额外的application.rb
时会发生此类错误。
您不需要这样做。所有模型都将自动加载命名空间。您只需要使用命名空间的子文件夹组织正确的结构。
如果您使用名称空间与模型,您可以使用这样的生成器:
rails g model membership/review
这将生成正确的命名空间模型,并将其保存到membership
子文件夹。