1

我是 RoR 的新手。请帮助我:我有两个模型:

class User < ActiveRecord::Base
  belongs_to :game
end

class Game < ActiveRecord::Base
  has_many :users, :foreign_key => "game_id"
end

游戏对象有很多用户。我需要找到所有游戏对象,其中 users.count == 1。请帮助。

4

2 回答 2

1

whereMrYoshiji 的答案很接近,但您需要使用groupand而不是尝试使用having

例如:

Game.joins(:users).group("users.game_id").having("count(users.game_id) = 1")

这将产生以下查询:

SELECT games.* FROM "games" INNER JOIN "users" ON "users"."game_id" = "games"."id" GROUP BY users.game_id HAVING count(users.game_id) = 1
于 2013-02-11T22:54:22.083 回答
0

有点长,但这对我有用:

 Game.joins(:users).where("(select count(users.game_id) from users users2 where users2.game_id = games.id) = 1")

您可以使用includes()joins()取决于您想要做什么。

于 2013-02-11T22:31:57.570 回答