关于rails association的一些新手问题。
我有一个Bug模型和一个状态模型。状态基本上只是一个键/值对表。在可用的选择中,我会说Bug has_one Status最有意义。但是,根据this
内容belongs_to ContentTemplate。走 回头看看我怎么描述的 问题,你会发现它有效。 使用belongs_to,表接受 对外键负责。所以 内容有一个content_template_id。和 ContentTemplate不需要任何东西。 我可以随意指出它。完成。
Bug belongs_to状态更合适(因为Bug应该使用外键)。在语义上,他的榜样是有道理的,但是我没有。这只是一个轨道的怪癖,在这种情况下它看起来很奇怪,或者我不理解某事/做错了?
答案 0 :(得分:19)
是的,我认为你刚刚在Rails中发现了一个略显奇怪的场景。我认为将“状态”视为bug所属的类别可能是有用的 - 在这种情况下,它是有道理的。
答案 1 :(得分: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
答案 2 :(得分:2)
您没有准确解释您希望获得的Bug和Status之间的关系,但我认为您对以下某项感兴趣:
has_many
,Status类中应为belongs_to
,has_one
,Status类中应为belongs_to
。在这两种情况下,Status都包含外键。在第二种情况下,措辞有点奇怪,因为一对一关系实际上是不对称的(一方应该只有一个FK)。
答案 3 :(得分:0)
如果状态只是一个查找/键值表,听起来您可能希望Status和Bug之间存在habtm(has_and_belongs_to_many
)关系。有了habtm,您最终会得到一个bugs_statuses
联接表,其中包含bug_id
和status_id
列以及您的错误和状态表。