我有一个ActiveRecord模型是这样的:如何在Rails 3.x中采集多个属性?
class Person < ActiveRecord::Base
attr_accessible :name
end
,并需要得到一个哈希映射Person
的id
s到他们的name
S:
{1 => "Paul", 2 => "Aliyah", 3 => ... }
现在,很明显的办法是
Person.all.collect { |p| [p.id, p.name] }.to_h
但是,我不需要实例化每个Person
,我只需要哈希。在Rails 4中,我可以用.pluck(:id, :name)
而不是collect
,但是在3.x中,pluck
只有一个参数。但是我发现这个解决办法得到我想要的东西,而无需加载模型:
Person.all.group(:id).minimum(:name)
问题:将我烧在地狱?另外,是否有一种更优雅的方式来做到这一点,并且我可能没有意识到这种hacky方法有什么缺点?谢谢!