私は、ユーザーを投稿に参加させて、表示可能な投稿を持つユーザーのみを取得するスコープを持っています。これはMySQLで動作しますが、PGはもっと厳しくなり、エラーが発生します。Rails/Postgres:GROUP BY句に列が表示されている必要があります
ユーザーモデル:
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: ERROR: column "users.account_id" must appear in the GROUP BY clause or be used in an aggregate function: 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"(文句ですDB内のすべてのユーザーが必要です)。
どのように修正するのですか?