Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在分组和计数后包含记录_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在分组和计数后包含记录

Ruby on rails 如何在分组和计数后包含记录,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个表,可以跟踪用户的喜好。现在我用这一行得到了前4名: Liked_item.group('name').order('count_id desc').count('id').take(4) 这将产生如下数组: => [["Name1", 10], ["Name 2", 8], ["Name 3", 5], ["Name 4", 3]] 现在,我不只是想包含完整记录的名称和编号(类似的内容不与模型关联,这就是为什么我必须按名称分组)。最好的方法是什么 它看起来像是一个使用: 用法

我有一个表,可以跟踪用户的喜好。现在我用这一行得到了前4名:

Liked_item.group('name').order('count_id desc').count('id').take(4)
这将产生如下数组:

=> [["Name1", 10], ["Name 2", 8], ["Name 3", 5], ["Name 4", 3]]

现在,我不只是想包含完整记录的名称和编号(类似的内容不与模型关联,这就是为什么我必须按名称分组)。最好的方法是什么

它看起来像是一个使用:

用法:

LikeItem.by_name(name)
这将返回一个ActiveRecord集合,其中包含给定名称的所有喜欢项

如果您确实希望有一个以名称为键、以相似项列表为值的散列,则可以使用Ruby(不推荐使用):


但我并不是在搜索某个特定的项目,我只是在查看表并选择出现次数最多的名称。我现在用这行代码得到了结果,但它只返回名称和计数,而不是完整的record@stoerebink我已经编辑了答案。查看最后一行也许更快的方法是查询数据库中的前4项,然后只进行4次查找?@stoerebink我真的不想说,所以决定在你之后:)@stoerebink我没有多少可以补充的答案。除非有一个基于数据库的解决方案,否则使用Ruby-就这么简单:)
LikeItem.by_name(name)
LikeItem.all.group_by(&:name).each_with_object({}) do |(name, collection), hash|
  hash[name] = { collection: collection, count: collection.size }
end