1

我有一个名为“Match”的模型和一个名为“Bet”的模型

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 回答