我有一个名为 email_messages 的表。我有列from
、to
、cc
、bcc
。目前,我将它们存储为文本字段,其中包含电子邮件地址的序列化数组。但我想将地址提取到它们自己的表中,这样我就可以重复使用地址,并更轻松地通过预先输入来搜索地址。
显然,我需要多对多。但如果我这样做:
class EmailMessage
has_many :email_message_addresses
has_many :addresses, through: :email_message_addresses
end
class Address
has_many :email_message_addresses
has_many :email_messages, through: :email_message_addresses
end
我如何才能将每个单独的from
、to
、cc
、bcc
字段的地址关联起来对于单个记录? from
字段可以包含 3 个地址,to
字段可以包含 5 个地址,依此类推。
最佳答案
向 email_message_addresses 添加一个名为 role
的属性,该属性可以采用值 from
、to
等。
您可能需要添加一些方法,以便可以执行以下语法
@message = EmailMessage.find(...)
@message.to_addresses # -> array of addresses in the "to" field
@message.cc_addresses # -> array of addresses in the "cc" field
# etc.
关于mysql - 与记录的各个字段的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39965672/