:: Base部分在Person中意味着什么< ActiveRecord :: Base类声明? 我是ruby的新手,也是我迄今为止收集的内容,Person<应该使用ActiveRecord。 谢谢。
答案 0 :(得分:9)
:: Base是模块ActiveRecord中的一个类。模块所做的一件事就是在Ruby中提供命名空间。在Ruby中,您不从模块继承,但可以使用include语句将其混合。
我建议您阅读Pickaxe本书或阅读Why's (Poignant) Guide to Ruby。
答案 1 :(得分:6)
在Ruby中,::
访问静态类或模块常量。 ActiveRecord::Base
表示ActiveRecord
类或模块有一个名为Base
的静态内部类,您正在扩展。
编辑,在这种情况下,ActiveRecord
是一个模块......
答案 2 :(得分:6)
::
是一元运算符,允许您访问在另一个类或模块中定义的常量,模块或类。它用于提供名称空间,以便方法和类名称不会与不同作者的其他类冲突。
当你在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