我只是(重新)开始玩Rails,我正在制作一个小卡片游戏应用程序。我似乎无法弄清楚我的外键设置
说我有4个物体:
- 游戏
- 球员
- 手
- 卡
游戏中有很多玩家,其中有很多牌都有很多牌。但这些牌也独立于手牌,球员和比赛 例如,我的数据库中有6张卡(1到6)。卡3可能在同一个游戏中的2个玩家手中。
如何为此设置密钥?我应该为“CardInHand”创建另一个对象来简化它吗?
答案 0 :(得分:2)
牌与牌之间的关系是经典的Has And Belongs To Many
(HABTM)。当你有一个HABTM关系时,需要有一个表来管理配对(hands_cards,比如说,只有一对id),但不需要有相应的模型。
(请注意,您需要创建一个迁移来自己生成hands_cards表;它不会自动创建。)
你可以选择创建一个单独的模型来表示手中的牌 - 这是has_many :through
关系 - 但我只会在有特殊原因的情况下这样做将这种关系建模为具体对象。
答案 1 :(得分:1)
标准的Rails最佳实践不是在数据库中使用外键,而是在模型上使用验证来确保数据的正确性。
另一个答案解释了你想要设置的内容。