:: Значение базовой части в ActiveRecord :: База - PullRequest
8 голосов
/ 01 декабря 2008

Что означает :: Базовая часть в Person

Ответы [ 3 ]

9 голосов
/ 01 декабря 2008

:: Base - это класс в модуле ActiveRecord. Одна из вещей, которую делают модули, - это предоставление пространства имен в Ruby. В Ruby вы не наследуете от модуля, но можете смешать его с помощью оператора include.

Могу ли я предложить взять книгу Кирка или прочитать Почему (Проникающее) Руководство по Ruby .

6 голосов
/ 25 августа 2016

:: - унарный оператор, который позволяет вам получить доступ к константе, модулю или классу, определенному внутри другого класса или модуля. Он используется для предоставления пространств имен, чтобы имена методов и классов не конфликтовали с другими классами разных авторов.

Когда вы видите 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
6 голосов
/ 01 декабря 2008

в Ruby, :: обращается к статическому классу или константам модуля. ActiveRecord::Base указывает, что класс или модуль ActiveRecord имеет статический внутренний класс с именем Base, который вы расширяете.

Редактировать: , как указывает Майк, в этом случае ActiveRecord - это модуль ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...