与记录的各个领域有很多甚至很多的关系

时间:2016-10-10 19:47:28

标签: mysql sql ruby-on-rails

我有一个名为email_messages的表。我有fromtoccbcc列。目前,我将它们存储为文本字段,其中包含电子邮件地址的序列化数组。但我想将地址提取到自己的表中,因此我可以重复使用地址,并使用typeahead搜索地址变得更容易。

显然,我需要多对多。但如果我这样做:

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

如何为单个记录关联每个fromtoccbcc字段的地址? from字段可以包含3个地址,to字段可以包含5个地址等。

1 个答案:

答案 0 :(得分:0)

向名为role的email_message_addresses添加属性,该属性可以采用值fromto等。

您可能希望添加一些方法,以便您可以执行以下语法

@message = EmailMessage.find(...)
@message.to_addresses  # -> array of addresses in the "to" field
@message.cc_addresses  # -> array of addresses in the "cc" field
#  etc.