Active Record Query收集2个属性

时间:2013-04-12 15:53:45

标签: sql ruby ruby-on-rails-3 activerecord

使用rails / active record时,每个对象查询/收集2个或3个属性的最佳方法是什么?

一个例子是,如果我想查询我的用户表并获取特定类型用户的所有用户ID和电子邮件。

如果我只想获得用户ID,我会这样做

User.where(:condition => nil).collect {|u| u.id}

但如果我想要ID和电子邮件怎么办?

1 个答案:

答案 0 :(得分:1)

只需收集数组中的idemail

User.where(:condition => nil).collect {|u| [u.id, u.email]}

或者如果您想要{:id => :email}形式的哈希:

User.where(:conditions => nil).inject({}) {|m, u| m[u.id] = u.email; m} 

如果您告诉数据库仅使用select获取您需要的字段,则可以提高效率:

User.where(:conditions => nil).select([:id, :email]).
     collect {|u| [u.id, u.email]}