Области не пропускает постоянный продукт? - PullRequest
0 голосов
/ 06 сентября 2011

Я хочу использовать '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 ]

2 голосов
/ 15 октября 2011

Вы случайно не добавили lib/scopes в ваши каталоги автозагрузки? Вы получите это сообщение, если Ruby пытается что-то загрузить, но получает то, что уже определено. Например, если он пытается получить определение для Product, загружает lib/scopes/product.rb и все, что он получает, это Scopes::Product. Механизм автозагрузки не такой умный, он не пытается разрешить проблемы или исчерпывающе обыскать деревья.

1 голос
/ 06 сентября 2011

Пожалуйста, попробуйте пространство имен таким образом ..

module Scopes
  module Product
      ....
  end
end
0 голосов
/ 26 мая 2012

используйте Product::ORDERING или Product::SCOPES вместо Scopes::Product::ORDERING или Scopes::Product::SCOPES

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...