:: Base部分在Person :: Base是ActiveRecord模块中的一个类.模块所做的一件事就是在Ruby中提供命名空间.在Ruby中,您不从模块继承,但可以使用include语句将其混合使用. 我建议拿起镐书或阅读为什么是(凄美)指南红宝石.
1> Mike Breen..:
在Ruby中,::
访问静态类或模块常量.ActiveRecord::Base
表示ActiveRecord
类或模块具有Base
您正在扩展的静态内部类.
编辑:迈克指出,在这种情况下ActiveRecord
是一个模块......
::
是一元运算符,允许您访问在另一个类或模块中定义的常量,模块或类.它用于提供名称空间,以便方法和类名称不会与不同作者的其他类冲突.
当你在Rails中看到ActiveRecord :: Base时,意味着在Rails中ActiveRecord::Base
是这样的
module ActiveRecord class Base end end
这意味着被调用的类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