如何使用ActiveRecord映射多个属性?

tab*_*uga 20 ruby activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

如果我输入我的控制台

u = User.first
u.friends(&map:username)
Run Code Online (Sandbox Code Playgroud)

我知道,["Peter", "Mary", "Jane"]但我也想表现生日,那我该怎么做?我试过了

u.friends(&map:username, &map:birthday)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

Geo*_*tte 39

您可以使用备用块语法:

u.friends.map{|f| [f.username, f.birthday]}
Run Code Online (Sandbox Code Playgroud)

这将给出一组数组.

u.friends.map{|f| "#{f.username} - #{f.birthday}"}
Run Code Online (Sandbox Code Playgroud)

会给你一个字符串数组.你可以从那里做很多事情.


tec*_*ams 7

使用 ActiveRecord >= 4 您可以简单地使用:

u.friends.pluck(:username, :birthday)
Run Code Online (Sandbox Code Playgroud)


Cho*_*ett 6

尝试

u.friends.map {|friend| [friend.username, friend.birthday]}
Run Code Online (Sandbox Code Playgroud)

&语法是一个简单的速记到底层红宝石方法。