2013-04-12 2 views
1

Каков наилучший способ запроса/сбора 2 или 3 атрибутов для каждого объекта при использовании рельсов/активной записи?Active Record Query Collecting 2 attributes

Примером может быть, если бы я хотел запросить таблицу пользователя и захватить все идентификаторы и адреса пользователей для определенного типа пользователей.

Если бы я только хотел, чтобы получить идентификаторы пользователей я бы

User.where(:condition => nil).collect {|u| u.id} 

но что, если я хочу, идентификатор и адрес электронной почты?

ответ

1

Просто собрать id и email в массиве:

User.where(:condition => nil).collect {|u| [u.id, u.email]} 

Или, если вы хотите хэш в виде {:id => :email}:

User.where(:conditions => nil).inject({}) {|m, u| m[u.id] = u.email; m} 

Вы можете сделать это немного более эффективным, если вы рассказать чтобы получить только те поля, которые вам понадобятся, используя select:

User.where(:conditions => nil).select([:id, :email]). 
    collect {|u| [u.id, u.email]} 
Смежные вопросы