2011-09-26 2 views
0

user와 user_level의 두 모델이 있습니다. 사용자는 has_many user_levels이고 사용자 수준은 user에 속합니다.레일에서 user_level이 지정된 사용자를 검색하는 방법

class user < ActiveRecord::Base 
    has_many :user_level 
end 

class UserLevel < ActiveRecord::Base 

    belongs_to :user 
end 

UserLevel.find_by_role ('sales')은 역할 판매의 모든 레코드 (w/user_id)를 검색합니다. 'sales'역할을 사용하여 user_level 사용자의 이메일을 검색하는 방법은 무엇입니까?

감사합니다.

답변

0
User.joins(:user_levels).where(:user_levels => { :role => "sales"}).select("email") 

또는

UserLevel.joins(:user).where(:role => "sales").select("email") 

업데이트는

UserLevel.find_by_role("sales").users 
는 는
+0

첫 번째 User.joins (: user_levels)가 작동합니다. 둘째는 그렇지 않습니다. 사용자와 user_level 간의 연결을 통해 동일한 정보를 검색하는 다른 방법이 있습니까? 연관성이 있으면 더 간단 할 수 있습니다. 감사. – user938363

+0

BTW 위의 첫 번째 방법으로 이메일과 이름을 검색하는 방법은 무엇입니까? select는 하나의 열 또는 모든 열을 선택할 수 있습니다. – user938363

0
당신은 뒤로하고 실제로 연결을 할 수 있습니다

원하는 그런 다음

class User < ActiveRecord::Base 
    belongs_to :user_level 
end 
class UserLevel < ActiveRecord::Base 
    has_many :users 
end 

:
@users = UserLevel.find_by_role ('sales') 사용자
그런 다음 @user 컬렉션을 반복하고 반복 내에서 이메일을 사용할 수 있습니다.

+0

질문에 연관성이 있다고 가정하면 사용자 이메일을 검색하는 방법은 무엇입니까? 모든 사용자는 적어도 하나의 user_level을 가지며 하나의 user_level은 사용자에게 속합니다. 응답에있는 협회는 저에게 조금 괴상하게 보인다. 감사. – user938363

+0

올바른 사용 예제로 11/22/2011 업데이트 됨. –

관련 문제