0

在我的 Rails 应用程序中,我有以下模型:用户、游戏和玩家。一个用户有很多游戏,一个游戏有很多玩家。到目前为止,这真的很简单,但问题是在一场比赛中,最大玩家数量是 8 人,并且有可能在达到最大玩家人数后加入游戏,但你是预备队。

所以问题是:我应该有一个额外的储备模型吗?所有模型应该如何相互关联?目前我已经通过在玩家模型中添加一个reserve属性来解决它,当达到最大数量时reserve属性变成1而不是0。这个解决方案感觉有点笨拙,需要很多代码。我想知道是否有人做过类似的事情并有更好的解决方案。

4

1 回答 1

0

您可以向 Game 模型添加方法。

has_many :players

def is_reserved
 self.players.count >= 8 ? true : false
end

然后放置一个条件,将玩家添加到游戏中。我假设你有@game 对象。

unless @game.is_reserved
  // add players
else
 // show the warning messaage or do nothing
end

希望它对你有用。

于 2013-06-26T10:28:38.873 回答