2010-03-08 57 views
1

我试图访问在ActiveRecord::Baseactive_record/base.rb行2402 Rails 2.3.5)中定义的常量VALID_FIND_OPTIONS在ActiveRecord :: Base中访问常量定义

ActiveRecord::Base::VALID_FIND_OPTIONS 

我得到NameError例外。

NameError: uninitialized constant ActiveRecord::Base::VALID_FIND_OPTIONS 

我在之前使用过类似的语法访问了其他库中的类常量。我不知道我哪里出错了。

回答

2

恒定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

试图获得ActiveRecord::Base::VALID_FIND_OPTIONS的代码在哪里?

如果您在加载ActiveRecord之前定义一个类,那么该常量将不可用。

您可以通过要求加载ActiveRecord来加载它。在某些情况下,在需要active_record之前,您将不得不要求rubygems。

尝试要求它们两者:

require 'rubygems' 
require 'active_record' 

# you should now be able to access ActiveRecord::Base::VALID_FIND_OPTIONS 
+0

我访问不断在我的控制器。当我从rails控制台(默认情况下加载active_record)使用它时,我得到相同的错误。 – 2010-03-09 16:04:10

相关问题