【发布时间】:2013-04-12 06:57:52
【问题描述】:
我有两个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"
知道发生了什么吗?
【问题讨论】:
-
Rails 控制台中
Membership::Review.new命令的错误是否仍然存在? -
是的,
Membership::Review.new也是如此。 -
您是否添加了任何带有
config.autoload_paths的额外路径以在应用程序配置中加载您的模型? -
我做到了:
config.autoload_paths += Dir[Rails.root.join('app', 'models', '**/')]。此代码自动加载子目录,因此我可以更好地组织非命名空间模型。 -
看来是你的问题,评论这一行,重启服务器并在控制台
Membership::Review.new中尝试。您不需要加载模型的子文件夹,它们将通过命名空间自动加载。
标签: ruby-on-rails namespaces associations