Val*_*yev 8 ruby ruby-on-rails
:: Base部分在Person <ActiveRecord :: Base类声明中的含义是什么?我是ruby的新手,从我到目前为止收集到的东西,应该使用Person <ActiveRecord.谢谢.
:: Base是ActiveRecord模块中的一个类.模块所做的一件事就是在Ruby中提供命名空间.在Ruby中,您不从模块继承,但可以使用include语句将其混合使用.
我建议拿起镐书或阅读为什么是(凄美)指南红宝石.
在Ruby中,::
访问静态类或模块常量.ActiveRecord::Base
表示ActiveRecord
类或模块具有Base
您正在扩展的静态内部类.
编辑:迈克指出,在这种情况下ActiveRecord
是一个模块......
::
是一元运算符,允许您访问在另一个类或模块中定义的常量,模块或类.它用于提供名称空间,以便方法和类名称不会与不同作者的其他类冲突.
当你在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)