Что такое ActiveRecord Rails Relation на самом деле? - PullRequest
3 голосов
/ 01 мая 2011

Я пытался понять некоторые из внутренних особенностей Rails Relations, чтобы эффективно использовать их в запросах. Поэтому я открыл консоль и провел несколько тестов:

ruby-1.9.2-p180 :036 > Skill.where(:second_class => 'Wealth Ranger').map {|att| att.class}
 => [Skill(id: integer, name: string, description: string, second_class: string, third_class: string, created_at: datetime, updated_at: datetime)]

Я бы не ожидал такого выхода. Я бы ожидал что-то вроде отношений или что-то подобное. Но похоже, что он пересекает каждый атрибут и создает тип для каждого.

Что такое отношение в терминах Руби? Это совершенно нестандартная структура? Если да, то есть ли сходство между хешами и массивами, или это следует рассматривать как полностью пользовательскую структуру?

EDIT:

После еще одного тестирования кажется, что он просто содержит объекты этого класса. Это так работает?

1 Ответ

8 голосов
/ 01 мая 2011

ActiveRecord Класс отношений в Rails 3 - это просто слой поверх Arel .Он обрабатывает сбор параметров для «отложенной загрузки» и упрощенных методов запросов Rails (по сравнению с прямым Arel).

Лучшее описание, которое я видел о его внутренней работе, - блог Эрни Миллера ,Он написал meta_search и meta_where , чтобы он знал, о чем говорит.

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