我有一个模型有 has_and_belongs_to_many
与其他两个模型的关系。例如,我有一个 Message
具有收件人的模型。但是,接收者可以是两种不同类型的模型之一。例如,InternalContact
, 和 ExternalContact
.
建立关系很容易,我可以获得消息的外部联系人 ( Message.first.external_contacts
) 或其内部联系人 ( Message.first.internal_contacts
)。然后我可以以同样的方式轻松地添加到这个关系数组 ( Message.first.external_contacts << ExternalContact.first
)
我想要的是能够通过调用类似的东西来简化事情并使其更有效:
Message.first.recipients # an array of both external and internal contacts
Message.first.recipients << ExternalContact/InternalContact # (add either model)
任何方向表示赞赏,我肯定被困住了!
最佳答案
您可以有一个单独的收件人类型表,然后仅将消息与收件人映射
Recipient Recipient_type Message Message_recipient_map
---------- --------------- ------- -------------------
id id id message_id
recipient_type_id recipient_id
然后你可以在消息和收件人之间建立 has_many_through 关系,并且可以通过调用 message.recipients 访问消息的所有收件人
希望对你有帮助!
关于ruby-on-rails - 多个具有并属于多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55694484/