2012-07-24 2 views
5

나는 이것을 위해 작동 할 것이라고 생각한 모든 것을 시도했지만 아무 것도 나타나지 않습니다.레일 범위 및 조인

(레일 3), 나는 차안에서 CD 플레이어가있는 모든 사용자를 찾아야합니다. 자동차에는 사용자 1 명과 라디오 1 대가 있으며 사용자는 자동차에 속해 있고 라디오에는 많은 자동차가 있습니다.

나는이 검색을 사용자 모델의 범위를 통해 수행하는 방법에 걸림돌이됩니다.

class User 
    belongs_to :car 

class Car 
    belongs_to radio 
    has_one :user, :dependent => destroy 

class Radio 
    has_many :cars 
+0

도움을 받으려면 데이터베이스 스키마가 어떤 모양인지 알려야합니다. –

+0

_ "사용자가 자동차에 속하고 라디오에 많은 차량이 있습니다."_ 이상한 모델입니다. 몇 가지 코드를 보여줄 수 있습니까? – alf

답변

11

나는 당신이 의미하는 것을 가정입니다 : 라디오는 많은 차를 가지고와 자동차가 하나의 사용자를 가지고 있기 때문에 자동차 radio_id 있으며, 사용자는 car_id, 있다. 외래 키가있는 테이블은 항상 관계의 belongs_to 끝에 있습니다.

정말 당신이 찾고있는 구조를 모른 채, 다음과 같이 작동합니다 :

scope :with_cd_player, joins(:cars).where('cars.radio_id is not null') 

을 라디오 범주 열이있는 경우, 다음 작동합니다.

scope :with_cd_player, joins(:car => :radio).where('cars.radio_id is not null').where("radios.category = 'cd_player'") 
+0

감사합니다! 정확히 내가 무엇을 찾고 있었는지. –