3列关联表?建模通过比赛向其他用户投注的用户

时间:2014-02-10 17:05:48

标签: ruby-on-rails model ruby-on-rails-4 associations

我想为我的应用实施投注系统,用户可以在该投注系统上下注,赢得与其他玩家的比赛。

以下是一个示例场景:

  

匹配1包含用户2与用户3。

     

用户1希望在用户2上“下注”以获胜。

因此,为了唯一识别下注,我们必须拥有3条信息。

  

1)更好的id(用户1)

     

2)匹配ID(匹配1)

     

3)正在下注的玩家(用户2)

因此,作为新手rails开发人员,我只开发了只有2列的关联表。我的问题是你如何建模一个包含3列的关联表“Bets”?

我希望能够说出

  

user.current_bets

显示用户已下注的所有当前投注,这将说明我所投注的匹配以及我下注的用户。

此外,在任何给定的比赛中,我希望能够看到所有在玩家1上下注的用户

  

match.p1_user_bet_list

所有投注玩家2的用户

  

match.p2_user_bet_list

非常感谢任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为这应该可以解决问题。

class User < ActiveRecord::Base
  has_many :bets, foreign_key: 'better_id'
  has_many :bet_ons, foreign_key: 'favorite_id'
  has_many :favorites, through: :bets
  has_many :betters, through: :bet_ons
end

class Bets < ActiveRecord::Base
  belongs_to :match
  belongs_to :better, class_name: 'User'
  belongs_to :favorite, class_name: 'User'
end

要调出用户放置的所有赌注,您可以使用:

user.bets

要获得所有在玩家1上下注的用户,您可以使用:

player1.betters

请注意,我没有对此进行测试。

有关此处关联的更多信息:http://guides.rubyonrails.org/association_basics.html