Что означает :: Основная часть означает в лице < ActiveRecord :: Декларация базового класса? Я новичок в рубине и из того, что я собрал до сих пор, Person < ActiveRecord следует использовать. Спасибо.:: Значение базовой части в ActiveRecord :: Base
ответ
:: Base класс в модуле ActiveRecord. Одна из вещей, которые делают модули, - это предоставление пространства имен в Ruby. В Ruby вы не наследуете модуль, но вы можете смешивать его с помощью оператора include.
Могу ли я подбирать книгу Pickaxe или читаю Why's (Poignant) Guide to Ruby.
в Ruby, ::
Доступ к статическим классу или модулям. ActiveRecord::Base
указывает, что класс или модуль ActiveRecord
имеет статический внутренний класс, называемый Base
, который вы распространяете.
Edit:, как Майк указывает, в этом случае ActiveRecord
является модуль ...
ActiveRecord определяется как модуль в Rails, http://github.com/rails/rails/tree/master/activerecord/lib/active_record/base.rb – 2008-12-01 12:43:42
::
- унарный оператор, который позволяет вам получить доступ к константе, модулю или классу, определенным внутри другого класса или модуля. Он используется для предоставления пространств имен, так что имена методов и классов не конфликтуют с другими классами разными авторами.
Когда вы видите 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
- 1. Сравнить ActiveRecord :: Base и ActiveRecord
- 2. Расширение ActiveRecord :: Base
- 3. Расширение ActiveRecord :: Base
- 4. ActiveRecord :: Base Without Table
- 5. присвоение базовой части производного класса
- 6. Теория/Обоснование за ActiveRecord :: Base
- 7. ActiveRecord :: Base Extension не работает
- 8. Пул соединений для ActiveRecord :: Base
- 9. Расширение ActiveRecord :: Base не работает
- 10. неинициализированный постоянная ActiveRecord :: Base :: StrictgitSanitizer
- 11. Добавление переменной к ActiveRecord :: Base
- 12. ActiveRecord :: Base не принадлежит к иерархии, спускающейся с ActiveRecord
- 13. , где метод validates находится в ActiveRecord :: Base?
- 14. Установка table_name в ActiveRecord :: Base подклассу
- 15. Доступ к константе, заданной в ActiveRecord :: Base
- 16. Добавление методов класса в ActiveRecord :: Base
- 17. ActiveRecord :: Base before_validation с условным не срабатывает
- 18. Где Rails ActiveRecord :: Base определяет хэш-конструктор?
- 19. Sharing ActiveRecord :: Base перечисления через модель
- 20. Доступ к классу через ActiveRecord :: Base
- 21. Тестирование кода, который проверяет экземпляры ActiveRecord :: Base
- 22. Как работает метод ActiveRecord :: Base «find_by_»?
- 23. Модель Rails не наследуется от ActiveRecord :: Base
- 24. эквивалент proxy_reflection для ActiveRecord :: Base # find?
- 25. Monkeypatching ActiveRecord :: Base :: ConnectionSpecification in Rails 3
- 26. undefined method `isol_level 'для ActiveRecord :: Base: Class
- 27. Как ActiveRecord :: Base динамически генерирует экземпляры vars?
- 28. Продлить ActiveRecord :: Base с двумя добытчиками колонки
- 29. Сортировка UUID и переопределение ActiveRecord :: Base
- 30. Sidekiq Install - неинициализированная константа ActiveRecord :: Base (NameError)
Майк, спасибо, мне действительно нужно забрать кирку, каламбурить ;-) – Valentin 2008-12-01 12:49:20