手机有很多信息。
电子邮件地址包含许多消息。
消息属于手机,电子邮件或两者都不属于。 belongs_to
关联是可选的。
以下关联似乎适用于这些关系:
has_many :messages
has_many :messages
belongs_to :phones, :email
这可以,还是有一些正确的方法来指定“can_belong_to”关系?
答案 0 :(得分:4)
完全正确的单向关系。使用两者有时被一些纯粹主义者称为“曲解依赖”,并且在使用validates_associated时可能会导致问题。
当您想要从一条消息中检索电话信息时,仅使用has_many :messages
的另一方可能还不够。一般来说,这是方便的问题。
答案 1 :(得分:1)
具有belongs_to
关联的模型包含外键(例如messages
表将包含phone_id
和email_id
列。
belongs_to
关联与has_many
相结合,可让您轻松访问相关记录:
phone.messages
message.phone
因此,如果没有belongs_to
和FK列,则has_many
关联非常有用。
在这种情况下,您可能需要多对多关系,例如has_and_belongs_to_many
,因为邮件可以包含多个收件人。