0
class Game < ActiveRecord::Base
  has_many :game_types, :dependent => :destroy
  has_many :types, :through => :game_types
end

class Type < ActiveRecord::Base
  has_many :game_types, :dependent => :destroy
  has_many :games, :through => :game_types
end

ゲームタイプ1==シングルプレイヤーゲームタイプ2==マルチプレイヤー

タイプIDが1または2、あるいはその両方のゲームをクエリするにはどうすればよいですか?

さらに、どちらも持たないゲームをクエリするにはどうすればよいですか?

これはwill_paginateを介したページ付けで使用されているため、単一のクエリが望ましいでしょう。

私の正気を救ってくれてありがとう。

4

1 に答える 1

3

Railsでは、いつでも単純なSQLに頼ることができます。ORはまだArelに完全に実装されていないので(最後にチェックしました)、必要なものは次のようになります。

Game.joins("game_types ON (game_types.game_id = games.id)").where("game_types.id IN (1,2)")

このように、クエリは依然として適度に実行されます。これを少し拡張して、IDへの直接参照を含めないようにすることもできますが、それはあなた次第です。

于 2012-07-16T13:05:03.233 に答える