了解ActiveRecord :: Base类名

时间:2013-03-27 06:29:11

标签: ruby-on-rails ruby activerecord

在浏览ActiveRecord源代码时,我发现:

class ActiveRecord::Base

我不明白类名是怎样的ActiveRecord::Base 请为我解释,我没有得到这个概念。

1 个答案:

答案 0 :(得分:5)

ActiveRecord实际上是一个Ruby Module,最初定义类似于:

module ActiveRecord
  # contents of module
end

模块为要定义的类和常量提供名称空间,这意味着类可以在模块内定义,如ActiveRecord::Base所示。所以这与

相同
module ActiveRecord
  class Base
    # contents of class
  end
end

通常,::运算符用于命名空间解析,用于引用命名空间内的常量。从技术上讲,任何以大写字母开头的变量都是常量,因此Base是一个常数,其值是类本身!如果FOO中定义的ActiveRecord常量如下:

module ActiveRecord
  FOO = "foo"
end

然后它的完全限定变量名称为ActiveRecord::FOO