我想在我的项目中使用'scope'。
我在lib下创建一个文件夹,参见
文件'product.rb'包含一些方法,例如
module Scopes::Product
#TODO: change this to array pairs so we preserve order?
SCOPES = {
# Scopes for selecting products based on taxon
:taxon => {
:taxons_name_eq => [:taxon_name],
:in_taxons => [:taxon_names],
},
# product selection based on name, or search
:search => {
:in_name => [:words],
:in_name_or_keywords => [:words],
:in_name_or_description => [:words],
:with_ids => [:ids]
},
...
我在我的模型'product.rb'
中使用它include ::Scopes::Product
错误消息:
pry(main)> Product
ArgumentError: Scopes is not missing constant Product!
from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:479:in `load_missing_constant'
答案 0 :(得分:2)
您是否恰巧将lib/scopes
添加到自动加载目录中?如果Ruby试图自动加载某些内容但得到已定义的内容,您将收到此消息。例如,如果它尝试获取Product
的定义,则加载lib/scopes/product.rb
,其获取的全部内容为Scopes::Product
。自动加载机制不是那么聪明,它不会尝试解决问题或彻底搜索树。
答案 1 :(得分:1)
请尝试以这种方式命名...
module Scopes
module Product
....
end
end
答案 2 :(得分:0)
使用Product::ORDERING
或Product::SCOPES
代替Scopes::Product::ORDERING
或Scopes::Product::SCOPES