我想检索特定模型的所有记录,并通过name
属性对每个记录进行“索引”。最终结果应该是Hash,其中键是记录的名称,值是记录。我可以使用像
def self.all_by_name
hash = {}
all.each { |model| hash[model.name] = model }
hash
end
有没有办法在活动记录查询中执行此操作?
答案 0 :(得分:0)
all.group(:name)
就是您所需要的!
一些文档:http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-group
答案 1 :(得分:0)
不,活动记录将返回数组或活动记录关系。您必须在进入所选数据类型后按摩它。 ActiveRecor dcan返回SQL通常可以返回的任何内容。但是,您可以使用group
方法,该方法本质上是SQL中的group by
。
我不确定你的方法应该做什么,因为如果有2个具有相同类的对象,你似乎要覆盖你的密钥的值。也许如果你在一个例子中更好地定义了你需要的东西,我可以帮助你更好。