2011-03-16 1 views
0

나는 alpha라는 모델을 가지고 있습니다. 다른 모델 인 베타에는 알파와 감마의 외래 키가 있습니다. 나는 주어진 알파와 감마 매치에 베타가 존재하는지보고 싶다. 그래서 나는 'a'라는 이름의 알파와 'g'라는 감마의 인스턴스에 대해 이렇게 해보려고했으나 작동하지 않는다. 어떤 이유로 든 각 베타의 감마를보아야합니다. 나는 그것을 불쾌한 고리에 넣을 수 있지만, 그것은 매우 비현실적인 것처럼 보인다.두 개의 외래 키와 일치하는 데이터베이스 라인이 있는지 확인

a.betas.gamma.includes?(g) 

는 또한 또한 작동하지 않습니다 a.betas.find(:gamma => g)

사람들의 다양한 형태를 시도했다. 그냥 모든 것을 베타 모델로 옮기고 베타 버전의 클래스 메소드로 만들겠습니까? 그것은 현저하게 불편한 것 같습니다.

답변

1

내가 잘 이해한다면 :

class Alpha << ActiveRecord::Base 
    has_many :betas 
end 

class Beta << ActiveRecord::Base 
    belongs_to :alpha 
    belongs_to :gamma 
end 

class Gamma << ActiveRecord::Base 
    has_many :betas 
end 

당신은 알파 클래스에 has_many :gammas, :through => :beta를 추가 할 수 있습니까? 그렇다면 다음을 시도하십시오.

a.gammas.exists?(g) 
+0

D' oh! 레일스가 어떻게 든 도와주고 싶어한다는 것을 알았어 ... 고마워! –

관련 문제