2014-11-03 3 views
2

уверен, что это просто один, но можно вернуть более 1 атрибут с сборнымИспользование Рубин собрать более 1 переменной

Так что я могу сделать

User.all.collect { |user| user.firstname} 

, но я не могу do

User.all.collect { |user| user.firstname, user.lastname} 

Что мне не хватает?

+0

' User.all.collect &: firstname', 'User.all.collect {| user | [user.firstname, user.lastname]} ' – apneadiving

+0

В зависимости от ваших потребностей [Enumerable # flat_map] (http://ruby-doc.org/core-2.1.4/Enumerable.html#method-i-flat_map) является Другая возможность: '[" bc "," de "]. flat_map (&: split) => [" b "," c "," d "," e "]'. –

ответ

5

collect возвращает массив.

Вы можете сделать это массивом пара:

User.all.collect { |user| [user.firstname, user.lastname]} 

С ActiveRecord pluck, вы можете иметь тот же результат с более эффективным запросом:

User.pluck(:firstname, :lastname) 

Вы также может collect «Firstname, lastname ":

User.all.collect { |user| "#{user.firstname}, #{user.lastname}"} 
Смежные вопросы