Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 了解ActiveRecord::基类名称_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 了解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

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

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的缩写;类基类
,它会“打开”类,以便您可以在其中定义方法。