Предположим, у меня есть модель Rails: class Project < ActiveRecord::Base
В консоли Rails:
> Project.all
=> #<ActiveRecord::Relation []>
Это кажется разумным.Тем не менее,
> Project.all.class
=> Project::ActiveRecord_Relation
Что такое Project::ActiveRecord_Relation
?В частности,
- Как он "добавился" (в пространство имен) к моему классу модели?
- Как он правильно отвечает на
is_a?
?Project.all.is_a?(ActiveRecord::Relation)
возвращает true
(что ожидается), но действительно ли Project::ActiveRecord_Relation
является экземпляром ActiveRecord::Relation
или это что-то еще? - Почему это происходит?Почему
Project.all
не возвращает ActiveRecord::Relation
, а не Project::ActiveRecord_Relation
?
(Это в контексте Rails 5.1, если оно изменилось в более старых или более новых версиях.)
(я открыт для редактирования заголовков, если кто-то может придумать лучший заголовок для этого вопроса)