【问题标题】:Rails Foreign key setup questionRails 外键设置问题
【发布时间】:2011-06-21 19:59:14
【问题描述】:

我刚刚(重新)开始使用 Rails,并且正在制作一个小纸牌游戏应用程序。我似乎无法弄清楚我的外键设置。
假设我有 4 个对象:
- 游戏
- 播放器
- 手
- 卡片

一个游戏有很多玩家,他们有很多手,也有很多牌。但这些牌也独立于手牌、玩家和游戏。
例如,我的数据库中有 6 张卡片(1 到 6)。卡 3 可能出现在同一游戏中的 2 名玩家手中。

如何为此设置密钥?我应该为“CardInHand”创建另一个对象来简化它吗?

【问题讨论】:

    标签: ruby-on-rails ruby foreign-key-relationship


    【解决方案1】:

    卡和手的关系是经典的Has And Belongs To Many (HABTM)。当您有 HABTM 关系时,需要有一个表来管理配对(例如,hands_cards,其中只有一对 id),但不需要相应的模型。

    (请注意,您需要自己创建迁移来生成 hands_cards 表;它不会自动创建。)

    正如您所说,您确实可以选择创建一个单独的模型来表示手中的牌——这是has_many :through 关系——但我只会在有特殊原因建模的情况下这样做这种关系作为一个具体的对象。

    【讨论】:

      【解决方案2】:

      Rails 的标准最佳实践不是在数据库中使用外键,而是在模型上使用验证来确保数据的正确性。

      正如另一个答案解释了您要设置的内容。

      【讨论】:

      • 我认为这是一个误导性的答案——Rails 绝对使用外键,它只是不创建外键约束。一个重要的区别。如果我的 Hand 表中有一个 Player id,那是一个外键,即使我的数据库没有强制 Player id 是有效的。
      • 嗯,你是对的 - 看起来我很困惑,尽管这就是他所说的。我的错。
      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 2011-03-19
      相关资源
      最近更新 更多