Он обращается к константам в данном классе или модуле. Например. ActiveRecord :: Base
- это константа Base
, определенная в модуле ActiveRecord
.
Это называется оператором разрешения области видимости. По сути, это причудливый способ ссылки на класс в пространстве имен. ActiveRecord - это пространство имен, а Base - это класс.
Когда приемник явно указан в вызове метода, он может быть отделен от имени метода с помощью точки (
.
) или двух двоеточий (::
). Единственное различие между этими двумя формами возникает, если имя метода начинается с заглавной буквы. В этом случае Ruby будет считать, что вызов методаreceiver::Thing
на самом деле является попыткой доступа к константе с именемThing
в приемнике, если в вызове метода нет списка параметров между круглыми скобками.