1

「マッチ」と呼ばれるモデルと「ベット」と呼ばれるモデルがあります

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の回答を試してください:

 @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

これを match.bets.first に変更しました (各 match_id と user_id に対して 1 ベットしかないので、機能します)。

4

2 に答える 2

2

ブロック内で行うだけで、各試合のベットにアクセスできmatch.betsます。

これらのベットを反復したい場合は、別のeach.

于 2013-02-27T13:56:17.903 に答える
0

@sevenseacatは正しい
@match.bet.each { |bet| bet.attr }かもしれません

于 2013-02-27T14:04:21.383 に答える