【发布时间】:2017-04-19 23:59:07
【问题描述】:
Attendance.joins(:user).group(:email, :name).count
上面的查询给了我以下结果。 “用户 1”有 2 次出席,“用户 2”有 6 次出席,而且我可以访问用户名和电子邮件。
{["email@example.com", "User 1"]=>2, ["email2@example.com", "User 2"]=>6]}
这很好,除了我真的希望 User.id 也包含在内。我不能按 ID 分组,因为这样每条记录都是唯一的,而不是按电子邮件和姓名分组。以下是我想要的:
{[1, "email@example.com", "User 1"]=>2, [2, "email2@example.com", "User 2"]=>6]}
任何帮助将不胜感激。
回答 Attendance.joins(:user).group(:email, :name, 'attendances.user_id').count
【问题讨论】:
-
它不应该是唯一的,除非你按
Attendence.id分组? -
按 ID 分组将是出勤的 ID。按 user_id 分组,我假设它在那个表上,会给你你想要的。
-
你将如何构造这个查询?我不断收到错误....“Attendance.joins(:user).group(:email, :name, 'attendance.user_id').count” 我得到的错误是“ActiveRecord::StatementInvalid: PG::UndefinedTable : 错误: 缺少表“出席”的 FROM 子句条目
-
表名将是复数 - 试试
attendances -
你们完全正确!我发誓我试过一千次;)
标签: sql ruby-on-rails postgresql activerecord