web-dev-qa-db-ja.com

ActiveRecordで複数の属性をマッピングする方法は?

コンソールに入力した場合

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

["Peter", "Mary", "Jane"]でも誕生日も見せたいのですが、どうすればいいですか?私は試した

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

しかし、これは機能しません。

23
tabaluga

代替ブロック構文を使用できます。

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

これは配列の配列を与えます。

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

文字列の配列が得られます。そこからかなりのことができます。

41
Geoff Lanotte

試してみてください

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

&構文は、基礎となるRubyメソッドの省略形です。

5
Chowlett

ActiveRecord> = 4の場合、次のように簡単に使用できます。

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