2011-02-01 2 views
0

어쩌면 내가 볼 수없는 간단한 문제이지만, 지금 나에게 조금 까다 롭습니다(has_mas> has_many)

내가 필요로하는 것은 프로젝트 알고있다 사용자가 내기를했다. 그냥 사용자가 내기를 가지고 프로젝트를 알 수있는 방법, 사용자 인스턴스에서 시작, 명확하게하기 위해, 그래서

class User < ActiveRecord::Base 
    has_many :bets 
end 
class Project < ActiveRecord::Base 
    has_many :bets 
end 
class Bet < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :project 
end 

:

some_user.bets.projects 

내 모델은 다음과 같습니다 내가 좋아하는 일을하고 싶습니다. SQL에서

는 그것이 작동되도록하는 방법

select projects.name from users 
       inner join bets 
          on bets.user_id = users.id 
       inner join projects 
          on bets.project_id = projects.id 
      where users.id = 1; 

같은 것?

답변

4

다음과 같이 UserProject 클래스 업데이트 :

class User < ActiveRecord::Base 
    has_many :bets 
    has_many :projects, :through => :bets 
end 

class Project < ActiveRecord::Base 
    has_many :bets 
    has_many :users, :through => :bets 
end 

그럼 당신이 수행 할 수 있습니다, 나는 약간 다른 부분을 변경해야합니다 당신은 나에게 있는지에 대한 방법을 제공

user = User.first  # Find a user 
projects = user.projects # and return the projects that have bets 
+0

을하지만, 갈 방법은': 관철 '이었습니다. 직접 베팅을하십시오. 감사합니다. –