2012-04-20 4 views
0

내가 목적으로 내 집 모델의 범위 방법을 만들어범위 지정 하시겠습니까?

class House 
has_many :apartments 
end 

class Apartments 
belongs_to :house 
has_many :category_join_table 
has_many :categories, :through => :category_join_table 
end 

이 relationsship을 가지고 그래서 내가 컨트롤러 로직에 house.with_apartments을 할 수

scope :with_apartments, lambda { joins(:appartments).group('appartments.id').uniq { |h| h[:id] }} 

"아파트 만 주택을 보여" . 이것은 잘 작동하므로 나는 페이지에 아파트가있는 집만 갖습니다. 그리고 아파트가없는 주택은 보여주지 않았습니다.

하지만 이제는 내 카테고리 모델 (many_to_many)과 연결을 만들고 싶습니다. 그래서 "아파트 및 카테고리 = X 만 집을 보여"

+0

는 질문을 명확히하기 위해'@의 some_category.houses' : 다음과 같은 유연성을 달성하기 위해 노력하고있다? – jdoe

+0

예. 집회와. 내 템플릿 페이지에 이걸 가지고 있다면 - @ houses.each do | house | - house.appartments.each do | a | # {a.guests} – Remco

+0

다음과 같은 여러 연결에 가입 할 수 있습니다 (조인 (appartments => : categories)). 그런 다음 몇 가지 쿼리를 추가하십시오. – Yanhao

답변

2

이 시도 :

# in category.rb 

has_many :category_join_table 
has_many :apartments, :through => :category_join_table 
has_many :houses, :through => :apartments 
+0

감사합니다. 관계를 기반으로 범위 메서드를 작성하는 방법을 도와 줄 수 있습니까? – Remco

+0

무엇을 할 것인가? 귀하의 질문은 "아파트 및 카테고리가있는 집만 표시 = X"였기 때문입니다. 이렇게하려면 'Category.find (some_id) .houses'를 사용하십시오. – jdoe

+0

나는 이것을 시도했다. 범위 : with_appartments_and_agri, lambda {조인 (: appartments). 그룹 ('appartments.id'). ("categories.name = 'Agriturismo'"))} 하지만 작동하지 않았습니다 ... – Remco