代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

Rails:属于vs,有一个

  •  35
  • Matt Briggs  · 技术社区  · 15 年前

    一个关于rails关联的新手问题。

    this

    内容属于ContentTemplate。去 问题,你会发现它是有效的。 对于所属对象,表接受 负责外键。所以 ContentTemplate不需要任何东西。

    Bug属于状态更合适(因为Bug应该使用外键)。从语义上讲,他的例子有道理,但我的例子没有道理。这只是rails的一个怪癖,在这种情况下它看起来很奇怪,还是我没有理解/做错事?

    4 回复  |  直到 15 年前
        1
  •  19
  •   Chuck    15 年前

    是的,我想您刚刚在Rails中发现了一个看起来有点奇怪的场景。我认为将“状态”视为bug所属的一种类别可能是有用的,从这个角度看,这是有道理的。

        2
  •  9
  •   Willem Obst Willem Obst    15 年前
    TABLE:
        Bug
        id integer
        desc string
        status_id integer fk
    
        Status
        id integer
        desc string
    
    RAILS MODEL:
        Bug
        belongs_to :status
    
        Status
        has_many :bugs
    
        3
  •  2
  •   Adam Byrtek    15 年前

    • 一对多:在这种情况下,应该有 has_many 在Bug类和 belongs_to
    • 一对一:在这种情况下,应该有 has_one 在Bug类和 属于

    在这两种情况下,“状态”都包含外键。在第二种情况下,措辞有点奇怪,因为一对一关系实际上是不对称的(只有一边应该有一个FK)。

        4
  •  0
  •   rnicholson    15 年前

    habtm has_and_belongs_to_many )状态和Bug之间的关系。有了habtm,你会得到一个 bugs_statuses 连接具有 bug_id status_id