在Rails中按自定义方法对所有记录进行分组

时间:2016-10-31 19:37:28

标签: ruby-on-rails

我想检索特定模型的所有记录,并通过name属性对每个记录进行“索引”。最终结果应该是Hash,其中键是记录的名称,值是记录。我可以使用像

这样的方法轻松完成这项工作
def self.all_by_name
  hash = {}
  all.each { |model| hash[model.name] = model }
  hash
end

有没有办法在活动记录查询中执行此操作?

2 个答案:

答案 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个具有相同类的对象,你似乎要覆盖你的密钥的值。也许如果你在一个例子中更好地定义了你需要的东西,我可以帮助你更好。