Ruby on rails 了解ActiveRecord::基类名称
浏览ActiveRecord源代码时,我发现:Ruby on rails 了解ActiveRecord::基类名称,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,浏览ActiveRecord源代码时,我发现: class ActiveRecord::Base 我不明白类名如何像ActiveRecord::Base 请给我解释一下,我不明白这个概念。ActiveRecord实际上是一个Ruby,最初的定义类似于: module ActiveRecord # contents of module end 模块为要在中定义的类和常量提供名称空间,这意味着类可以在模块内定义,正如ActiveRecord::Base所示。所以这和 module Activ
class ActiveRecord::Base
我不明白类名如何像ActiveRecord::Base
请给我解释一下,我不明白这个概念。
ActiveRecord
实际上是一个Ruby,最初的定义类似于:
module ActiveRecord
# contents of module
end
模块为要在中定义的类和常量提供名称空间,这意味着类可以在模块内定义,正如ActiveRecord::Base
所示。所以这和
module ActiveRecord
class Base
# contents of class
end
end
通常,:
操作符用于名称空间解析,用于引用名称空间中的常量。从技术上讲,任何以大写字母开头的变量都是常量,因此Base
是常量,其值就是类本身!如果在ActiveRecord
中定义了一个名为FOO
的常量,则如下所示:
module ActiveRecord
FOO = "foo"
end
那么它的完全限定变量名应该是
ActiveRecord::FOO
我想现在我明白了,我引用的类ActiveRecord::Base是openclass,对吧?是的,classactiverecord::Base
是模块ActiveRecord的缩写;类基类
,它会“打开”类,以便您可以在其中定义方法。