【问题标题】:Bi-Directional Self-Referential Active record association双向自引用活动记录关联
【发布时间】:2016-01-04 01:14:10
【问题描述】:

玩 Rails 的第一周,我有点卡在这种活跃的记录关系上

我现在有 3 张桌子,Events、Fights 和 Fighters。每场战斗都属于一个事件,战士可以进行多次战斗。我希望能够在战斗表中存储信息,例如获胜者、战斗如何获胜、裁判等。

我一直在做一些研究,我认为我需要一个双向的自我参照,有很多通过关系来进行战斗。这是否需要通过表中的 2 个条目?如果是这样,我如何在查看每个战斗显示没有 2 条记录的事件时查询战斗?

如果我想在战士页面上显示战士记录,存储获胜者的最佳方式是什么?表中有一个winner_id 和一个loser_id?当可以进行平局而没有比赛时,这会变得令人困惑。

也可能发生没有结果的战斗,因为它们还没有发生。我正在考虑为这些使用单独的表格。

非常感谢任何建议! 干杯

【问题讨论】:

    标签: ruby-on-rails activerecord has-many-through self-reference bidirectional


    【解决方案1】:

    我建议再添加几个表:

    参与者

    在一场比赛中可以支持两个以上的战士(不确定你的领域,但这可能对双打摔跤很有用)

    • fight_id - 战斗外键 (belongs_to)
    • fighter_id - 战斗外键 (belongs_to)

    决定

    该决定可能包含大量信息,例如 type = "KO"、"TKO" 等。其他信息,例如法官投票。平局和不做决定不会去这里

    • fight_id - 战斗外键 (belongs_to)
    • 类型
    • winner_id
    • loser_id
    • dt - 达成决定的日期时间

    并编辑战斗以包含状态字段:

    打架

    • 状态 -(决定、未决定、平局、取消、推迟等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多