鉴于Rails应用程序,其中:计数不重复的记录,同时从另一个表拔毛
class Team < ActiveRecord::Base
belongs_to :captain, class_name: User
我想简洁查询数据库并获得船长的总结和团队的人数它们属于:
[[23, "Pat", "Smith"]] Teams: 1
[[46, "Kate", "Jones"]] Teams: 1
[[107, "John", "Doe"]] Teams: 3
...
我可以得到每个船长的ID的哈希和球队的数量:
> Team.group(:captain_id).count
=> {85=>3, 106=>1, 81=>1, 25=>1, 32=>1, 8=>3, 1=>1, 79=>2, 26=>1}
但随后它会 丑陋。下面的作品,但似乎丑陋且具有n + 1周的SQL查询:
Team.group(:captain_id).count.sort.to_h.each { |key,val| puts "#{User.where(id: key).pluck(:id, :first, :last)} Teams: #{val}" }
什么是Rails的方法是什么?
您的问题不是直接重复,但您可能会在[此问题及其答案]中找到有用的内容(https://stackoverflow.com/questions/17252669/rails-query-with-select-group-and -having-不会工作)。此外,使您的协会双向。 – anothermh