:: ActiveRecord :: Base中的基本部分

Val*_*yev 8 ruby ruby-on-rails

:: Base部分在Person <ActiveRecord :: Base类声明中的含义是什么?我是ruby的新手,从我到目前为止收集到的东西,应该使用Person <ActiveRecord.谢谢.

Mik*_*een 9

:: Base是ActiveRecord模块中的一个类.模块所做的一件事就是在Ruby中提供命名空间.在Ruby中,您不从模块继承,但可以使用include语句将其混合使用.

我建议拿起书或阅读为什么是(凄美)指南红宝石.


Dan*_*ton 6

在Ruby中,::访问静态类或模块常量.ActiveRecord::Base表示ActiveRecord类或模块具有Base您正在扩展的静态内部类.

编辑:迈克指出,在这种情况下ActiveRecord是一个模块......


Faa*_*lak 6

::是一元运算符,允许您访问在另一个类或模块中定义的常量,模块或类.它用于提供名称空间,以便方法和类名称不会与不同作者的其他类冲突.

当你在Rails中看到ActiveRecord :: Base时,意味着在Rails中ActiveRecord::Base 是这样的

module ActiveRecord
  class Base
  end
end
Run Code Online (Sandbox Code Playgroud)

这意味着被调用的Base在一个模块中 ActiveRecord,然后被引用为ActiveRecord::Base

为了更好地理解:: operator,只需从tutorialspoint.com中学习这个例子:

MR_COUNT = 0        # constant defined on main Object class
module Foo
  MR_COUNT = 0
  ::MR_COUNT = 1    # set global count to 1
  MR_COUNT = 2      # set local count to 2
end
puts MR_COUNT       # this is the global constant
puts Foo::MR_COUNT  # this is the local "Foo" constant
Run Code Online (Sandbox Code Playgroud)