Person
发布于 2008-12-01 12:42:13
::Base是模块ActiveRecord中的一个类。模块做的一件事就是在Ruby中提供名称空间。在Ruby中,您不能继承模块,但可以使用include语句将其混合使用。
我可以建议你拿起Pickaxe这本书或者阅读Why's (Poignant) Guide to Ruby吗?
发布于 2008-12-01 12:41:13
在Ruby语言中,::访问静态类或模块常量。ActiveRecord::Base表示ActiveRecord类或模块有一个您正在扩展的名为Base的静态内部类。
编辑:正如迈克所指出的,在这种情况下,ActiveRecord是一个模块……
发布于 2016-08-25 14:14:06
::是一元运算符,它允许您访问在另一个类或模块中定义的常量、模块或类。它用于提供命名空间,这样方法和类名就不会与不同作者的其他类冲突。
当您在Rails中看到ActiveRecord::Base时,这意味着在Rails中,ActiveRecord::Base是这样的
module ActiveRecord
class Base
end
end这意味着一个名为Base的类位于一个模块ActiveRecord中,该模块随后被引用为ActiveRecord::Base
为了更好地理解::运算符,只需通过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" constanthttps://stackoverflow.com/questions/330666
复制相似问题