2013-02-27 1 views
1

나는 "일치"라는 모델과 "베팅"액세스 레일 has_many에 포함

class Match < ActiveRecord::Base 
    ... 
    has_many :bets 
end 

라는 모델 그리고 내 모델 베팅이 : 나는 다음과 같은 코드를 사용하고

class Bet < ActiveRecord::Base 
    attr_accessible :match_id, :user_id, :bet 
    ... 
    belongs_to :match 
    belongs_to :user 
end 

을 일부 일치 및 사용자의 베팅을 함께 선택하십시오.

@matches = Match.includes(:bets).where("bets.user_id = ? or bets.user_id is NULL", @user.id) 

이 쿼리로 어떻게 사용자 베팅에 액세스 할 수 있습니까?

이 작동하지 않습니다 사용 :

@matches.each do |match| 
    match.bet.bet 
    ... 

어떻게 일치 안에 내기 속성에 액세스 할 수?

감사합니다. 이 코드로 대답 @sevenseacat 시도


: 작동 그래서 나는 그것이 match.bets.first로 변경 한

@user ||= User.find_by_id(params[:user_id]) if params[:user_id] 

    if @user 
    @matches = Match.includes(:home_team, :away_team, :bets).where("bets.user_id = ? or bets.user_id is NULL", @user.id) #.group_by{ |match| match.date.strftime("%d/%m/%y")} 

    @matches.each do |match| 
     match.bets.each do |bet| 
     bet.bet 
     end 
    end 
    end 

(I는 각 match_id 및 USER_ID 1 내기가).

답변

2

블록 내에서 간단히 match.bets을 수행하면 각 경기의 베팅에 액세스 할 수 있습니다.

해당 베팅을 반복하고 싶다면 다른 each을 사용하십시오.

+0

감사에 대한 어쩌면 좋은
@match.bet.each { |bet| bet.attr } 권리입니다. 각 사용자는 경기에 대해 단 하나의 내기 만 할 수 있습니다. 사용자 match.bet하는 방법이 ?? –

+0

코드에 의해 일치 항목은 여전히 ​​많이 있지만 'match.bets'에는 올바른 내기 만 포함됩니다. – sevenseacat

+0

이 코드는 BET가 아닌 Match 오브젝트를 인쇄합니다. '@matches.each do | match | match.bets.each do | bet | bet.bet end end' –

0

@sevenseacat 당신의 대답에 대한 당신