我想为我的应用实施投注系统,用户可以在该投注系统上下注,赢得与其他玩家的比赛。
以下是一个示例场景:
匹配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
非常感谢任何帮助。
提前致谢!
答案 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