我有一個將用戶連接到帖子的作用域,以便僅獲取具有可見帖子的用戶。這在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)
它抱怨 「users.account_id」,這是從調用@account.users
(我明明唐不希望數據庫中的所有用戶)。
任何想法如何解決?