2012-03-29 2 views
0

2 개의 모델로 레일 요청을 작성하고 싶습니다. 아주 단순하다고 생각하지만 직접 루프를하고 싶지는 않습니다. 내 국가 모델에있어레일즈 - 두 모델로 찾기 찾기

:

내가 첫 번째 요청 따라 모든 국가 싶어
def self.find_for_user(user_id) 
    wines = Wine.where("user_id = ?", user_id).group(:country_id) 

    where("countries.id IN ?", wines.map()) 
    end 

(국가별로 그룹화 와인을, 난 그냥 국가가 필요)

나는 내가 할 수있는 생각 map() 또는 다른 명령어를 한 줄에 입력하십시오. 와인의 모든 country_id 필드를 가져와야합니다.

감사합니다.

답변

0

당신이 협회는 즉 와인과 국가 (사이에 설정 가지고 있다고 가정. has_many :wines in country.rb) 나는 이것이 당신이 찾고있는 것이라고 생각한다.

+0

이것은 완벽하고 더 "레일"처럼 보입니다. :) 감사합니다 ! –

0

당신이 원하는 모든 특정 사용자에 대한 와인이있는 모든 국가의 경우, 당신은 SQL에서 해당 작업을 수행 할 수 있습니다

where("countries.id in (select country_id from wines where wines.user_id = ?)", user_id) 
+0

이것은 완벽하게 작동한다. 그러나 나는 Chris의 코드를 사용할 것이라고 생각한다. 어느 것이 더 적은 리소스를 사용하는지 알지 못합니다. –