35

关于 Rails 协会的一个新手问题。

我有一个 Bug 模型和一个 Status 模型。状态基本上只是一个键/值对表。在可用的选择中,我会说 Bug has_one Status 最有意义。然而,根据这个

内容属于_内容模板。回去看看我是如何描述这个问题的,你会发现它是有效的。使用belongs_to,表接受外键的责任。所以 Content 有一个 content_template_id。而 ContentTemplate 不需要任何东西。我可以随意指点。完毕。

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

4

4 回答 4

20

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

于 2009-05-22T21:45:54.633 回答
9
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
于 2009-05-22T21:30:43.137 回答
2

您没有准确解释您希望获得的 Bug 和 Status 之间的关系,但我假设您对以下其中一项感兴趣:

  • 一对多:在这种情况下,应该有has_manyBug 类和belongs_toStatus 类,
  • 一对一:在这种情况下,应该有has_oneBug 类和belongs_toStatus 类。

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

于 2009-05-22T21:52:33.513 回答
0

如果 Status 只是一个查找/键值表,听起来您可能想要 Status 和 Bug 之间的habtm ( has_and_belongs_to_many) 关系。使用 habtm,您最终会得到一个bugs_statuses连接表,其中包含bug_idstatus_id以及错误和状态表。

于 2009-05-22T21:24:51.870 回答