ActiveRecord 查询。按多个表中的多个列进行分组

wip*_*len 3 sql postgresql activerecord ruby-on-rails

Attendance.joins(:user).group(:email, :name).count
Run Code Online (Sandbox Code Playgroud)

上面的查询给了我下面的结果。“用户 1”有 2 次出席,“用户 2”有 6 次出席,此外我还可以访问用户名和电子邮件。

{["email@example.com", "User 1"]=>2, ["email2@example.com", "User 2"]=>6]}
Run Code Online (Sandbox Code Playgroud)

这很棒,但我真的希望 User.id 也被包含在内。我无法按 ID 分组,因为这样每条记录都是唯一的,而不是按电子邮件和姓名分组。以下是我想要的:

{[1, "email@example.com", "User 1"]=>2, [2, "email2@example.com", "User 2"]=>6]}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

回答 attend.joins(:user).group(:email, :name, 'attendances.user_id').count

wip*_*len 6

Attendance.joins(:user).group(:email, :name, 'attendances.user_id').count
Run Code Online (Sandbox Code Playgroud)