Доступ к константе, определенной в ActiveRecord :: Base - PullRequest
1 голос
/ 08 марта 2010

Я пытаюсь получить доступ к константе VALID_FIND_OPTIONS, определенной в ActiveRecord::Base (active_record/base.rb Линия 2402 Rails 2.3.5).

ActiveRecord::Base::VALID_FIND_OPTIONS

Я получаю исключение NameError.

NameError: uninitialized constant ActiveRecord::Base::VALID_FIND_OPTIONS

Ранее я обращался к константам классов в других библиотеках, используя аналогичный синтаксис. Я не уверен, где я иду не так.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Константа VALID_FIND_OPTIONS была определена внутри анонимного класса ActiveRecord::Base, следовательно, она не была доступна как ActiveRecord::Base::VALID_FIND_OPTIONS

module ActiveRecord
  class Base
    class << self
      # the constant belongs to the scope of the anonymous class
      VALID_FIND_OPTIONS = [..]
    end
  end
end

Доступ к константе можно получить с помощью следующего синтаксиса:

ActiveRecord::Base.singleton_class::VALID_FIND_OPTIONS
1 голос
/ 09 марта 2010

Где код, который пытается получить ActiveRecord::Base::VALID_FIND_OPTIONS?

Если вы определяете класс до загрузки ActiveRecord, константа будет недоступна.

Вы можете принудительно загрузить ActiveRecord, если потребуется. В некоторых случаях вам придется потребовать rubygems, прежде чем требовать active_record.

Попробуйте потребовать их обоих:

require 'rubygems'
require 'active_record'

# you should now be able to access ActiveRecord::Base::VALID_FIND_OPTIONS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...