Mongoid: Как загрузить только некоторые поля объекта, который вы лениво загружаете через ссылку?

Из соображений производительности я использую как можно чащеonly() ключевое слово при написании mongoid запроса, чтобы указать поля, которые я хочу загрузить.

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

Я бы написал:

User.where(:groups => :admins).only(:email).each do |u|
 puts u.email
end

Я делаю это, потому что моя пользовательская модель довольно полна большого количества данных, которые я с радостью могу игнорировать, перечисляя кучу писем.

Однако теперь давайте представим, что на моих пользователей ссылаются через модель Project, так что для каждого проекта я могу сделать:project.user, Благодаря ленивой загрузке mongoid мой объектный пользователь будет создан (и будет запрошен из БД) только тогда, когда я вызову ссылку.

Но что, если я хочу перечислить всю электронную почту владельца всего админ проекта, например?

Я бы написал это:

Project.where(:admin_type => true).each do |p|
  puts p.user.email
end

Основная проблема здесь заключается в том, что, делая это, я загружаю весь пользовательский объект для каждого проекта, и если есть много проектов, соответствующих запросу, которые могут стать довольно тяжелыми. Так как мне загрузить только электронные письма?

Я мог бы сделать это:

User.where(:_id => p.user_id).only(:email).first.email

Но это очевидно побеждает цель хорошего синтаксиса простого выполнения:

p.user.email 

Я хотел бы написать что-то вроде:p.user.only(:email).email, но я не могу. Есть идеи ?

Alex