我有一个作用域,将用户与帖子连接起来,只获取拥有可见帖子的用户。这在MySQL中可以工作,但PG要求更加严格,并会产生错误。
用户模型:
belongs_to :account
scope :have_posts, joins(:posts).where('posts.visible => true').group('users.id')
控制器:
@account.users.have_posts.each do |user|
# do stuff
end
错误:
(PGError: 错误: "users.account_id" 列必须出现在 GROUP BY 从句中,或在聚合函数中使用:SELECT "users".* FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id" WHERE ("users".account_id = 1) AND (recommendations.approved = true) GROUP BY users.id)
它指出了来自调用 @account.users
的 "users.account_id"(因为我显然不希望在数据库中所有用户都被查询)。
有什么想法如何解决?