所以我有一个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获取玩家。

10-05 22:58