【问题标题】:How to map more than one Attribute with ActiveRecord?如何使用 ActiveRecord 映射多个属性?
【发布时间】:2011-03-15 17:56:47
【问题描述】:
如果我在控制台中输入
u = User.first
u.friends(&map:username)
我得到["Peter", "Mary", "Jane"] 但我也想显示生日,那我该怎么做?我试过了
u.friends(&map:username, &map:birthday)
但这不起作用。
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-3
ruby-on-rails-4
activerecord
【解决方案1】:
使用 ActiveRecord >= 4,您可以简单地使用:
u.friends.pluck(:username, :birthday)
【解决方案2】:
您可以使用替代块语法:
u.friends.map{|f| [f.username, f.birthday]}
这将给出一个数组数组。
u.friends.map{|f| "#{f.username} - #{f.birthday}"}
会给你一个字符串数组。你可以从那里做很多事情。
【解决方案3】:
试试
u.friends.map {|friend| [friend.username, friend.birthday]}
& 语法只是底层 Ruby 方法的简写。