所以我有一个User
模型,我想和我的朋友创建锦标赛支架(单淘汰)。我有三种型号:
Tournament
has_many :players
has_many :matches
Player
belongs_to: tournament
belongs_to: user
has_many_and_belongs_to :matches
Match
belongs_to: tournament
has_many_and_belongs_to :players
所以我要做的是我有一个表格,当他们创建一个锦标赛,你可以选择朋友成为它的一部分。
我创建
Tournament
对象,然后创建Player
对象,最后创建Match
对象match_player
表中有诸如轮数和玩家得分等数据。这是个好办法吗?还是有更简单的方法让我看不到?我只是觉得这是解决这个问题的一个相当粗糙的方法。
最佳答案
你不需要一个匹配播放器来指定出现某个匹配的用户,相反,你可以使用播放器本身作为avathar连接用户来匹配和保存像当前回合这样的信息。同样,在锦标赛中不需要冗余的玩家id,这会改变rails的标准化偏好,因为您可以从锦标赛中按tourname.matches.joins:players获取玩家。