5

一部手机有很多信息。

一个电子邮件地址有许多消息。

一条消息要么属于电话、电子邮件,要么都不属于。该belongs_to关联是可选的。

以下关联似乎适用于这些关系:

  • 手机型号has_many :messages
  • 电子邮件模型has_many :messages
  • 消息模型没有belongs_to :phones, :email

这可以吗,还是有一些适当的方法来指定“can_belong_to”关系?

4

2 回答 2

4

这是完全正确的单向关系。使用两者有时被一些纯粹主义者称为“curcular dependency”,并且在使用validates_associated时可能会导致问题。

当您想从一条消息中检索电话信息时,仅从另一端使用has_many :messages可能是不够的。一般是为了方便。

于 2011-02-07T20:04:04.927 回答
1

具有关联的模型belongs_to包含外键(例如,messages表将具有phone_idemail_id列)。

belongs_to关联结合让has_many您可以轻松访问关联记录:

phone.messages
message.phone

因此,如果没有belongs_to和 FK 列,has_many关联就不是很有用。

在这种情况下,您可能需要多对多关系,例如has_and_belongs_to_many消息可以有多个收件人。

于 2016-04-24T20:51:25.707 回答