Как сопоставить более одного атрибута с ActiveRecord? - PullRequest
20 голосов
/ 14 июля 2010

Если я наберу в своей консоли

u = User.first
u.friends(&map:username)

я получу ["Peter", "Mary", "Jane"], но я также хочу показать день рождения, так как мне это сделать?Я пытался

u.friends(&map:username, &map:birthday)

, но это не работает.

Ответы [ 3 ]

38 голосов
/ 14 июля 2010

Вы можете использовать синтаксис альтернативного блока:

u.friends.map{|f| [f.username, f.birthday]}

, что даст массив массивов.

u.friends.map{|f| "#{f.username} - #{f.birthday}"}

даст вам массив строк. Оттуда можно сделать совсем немного.

4 голосов
/ 14 июля 2010

Попробуйте

u.friends.map {|friend| [friend.username, friend.birthday]}

Синтаксис & является просто сокращением для основного метода Ruby.

2 голосов
/ 23 августа 2018

С ActiveRecord> = 4 вы можете просто использовать:

u.friends.pluck(:username, :birthday)
...