范围不缺少常量产品?

时间:2011-09-06 09:56:30

标签: ruby ruby-on-rails-3 scope

我想在我的项目中使用'scope'。

我在lib下创建一个文件夹,参见

the directory structure

文件'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'

3 个答案:

答案 0 :(得分:2)

您是否恰巧将lib/scopes添加到自动加载目录中?如果Ruby试图自动加载某些内容但得到已定义的内容,您将收到此消息。例如,如果它尝试获取Product的定义,则加载lib/scopes/product.rb,其获取的全部内容为Scopes::Product。自动加载机制不是那么聪明,它不会尝试解决问题或彻底搜索树。

答案 1 :(得分:1)

请尝试以这种方式命名...

module Scopes
  module Product
      ....
  end
end

答案 2 :(得分:0)

使用Product::ORDERINGProduct::SCOPES代替Scopes::Product::ORDERINGScopes::Product::SCOPES