2012-07-16 2 views
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 == 멀티레일을 통해 has_many 또는 쿼리

나도 형식 ID 1 또는 2 또는 모두가 게임에 대한 조회 할 수 있습니까?

또한 어떻게 둘 중 하나도없는 게임을 쿼리 할 수 ​​있습니까?

이것은 will_paginate를 통한 페이지 매김과 함께 사용되므로 단일 쿼리가 바람직합니다.

미리 감사드립니다.

답변

3

레일에서는 항상 단순한 SQL에 의존 할 수 있습니다. 또는 아직 Arel에 완전히 구현 (마지막으로 내가 확인) 그래서 당신이 원하는 것은이 비슷합니다되지 않습니다

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

이 방법은 쿼리가 여전히 합리적으로 확대됨에 있습니다. ID에 대한 직접적인 참조를 포함하지 않기 위해 조금 확장 할 수는 있지만 그게 당신에게 달린 것입니다.

+0

우수 - 감사합니다. – pglombardo