1

RoR初心者です。私を助けてください:私は2つのモデルを持っています:

class User < ActiveRecord::Base
  belongs_to :game
end

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

ゲームオブジェクトには多くのユーザーがいます。users.count == 1 のすべての Game オブジェクトを見つける必要があります。助けてください。

4

2 に答える 2

1

MrYoshiji の答えは近いですが、 を使用しようとする代わりに、andwhereを使用する必要があります。grouphaving

例えば:

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 に答える