ruby-on-rails - 理解 ActiveRecord::基类名称

标签 ruby-on-rails ruby activerecord

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

class ActiveRecord::Base

我不明白类名怎么会像ActiveRecord::Base 请帮我解释一下,我不明白这个概念。

最佳答案

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

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

关于ruby-on-rails - 理解 ActiveRecord::基类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653052/

相关文章:

ruby-on-rails - Rails 日志文件 "not opened for writing"

ruby-on-rails - 无法在 API Controller 中自动加载常量

ruby - 在数组中找到 2 个缺失数字的最快方法

mysql - ActiveRecord、MySQL 和嵌套事务——行为是什么?

jquery - 让 div 像复选框一样工作

javascript - 从 javascript onclick 发出 ajax 请求

ruby-on-rails - 按列 'OR' Rails 查找事件记录

javascript - 以 Rails 4 形式将 <ul> 列表作为参数数组提交,使用 javascript 将 params 值添加到 params 哈希

ruby-on-rails - Rails 3.1 before_create 回调在克隆模型后不会触发

ruby-on-rails - Rails 3 default_scope 按外键对象名称排序?