::
- унарный оператор, который позволяет вам получить доступ к константе, модулю или классу, определенному внутри другого класса или модуля. Он используется для предоставления пространств имен, чтобы имена методов и классов не конфликтовали с другими классами разных авторов.
Когда вы видите ActiveRecord :: Base в Rails, это означает, что в 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" constant