使用rails / active record时,每个对象查询/收集2个或3个属性的最佳方法是什么?
一个例子是,如果我想查询我的用户表并获取特定类型用户的所有用户ID和电子邮件。
如果我只想获得用户ID,我会这样做
User.where(:condition => nil).collect {|u| u.id}
但如果我想要ID和电子邮件怎么办?
答案 0 :(得分:1)
只需收集数组中的id
和email
:
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]}