mysql - 与记录的各个字段的多对多关系

标签 mysql sql ruby-on-rails

我有一个名为 email_messages 的表。我有列fromtoccbcc。目前,我将它们存储为文本字段,其中包含电子邮件地址的序列化数组。但我想将地址提取到它们自己的表中,这样我就可以重复使用地址,并更轻松地通过预先输入来搜索地址。

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

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 个地址,依此类推。

最佳答案

向 email_message_addresses 添加一个名为 role 的属性,该属性可以采用值 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.

关于mysql - 与记录的各个字段的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39965672/

相关文章:

mysql - 在 mysql 命令行界面中创建新用户

java - 如何使用java获取数据库状态?

mysql : compare two row on same table

php - wamp 的 SQL Server 由于 Avast 被阻止

ruby-on-rails - 测试失败,即使它正在测试的东西正在通过

javascript - Turbolinks 不工作 - 而是加载页面两次

mysql - 为单列插入多个值

mysql - 触发器在 PhpMyAdmin sql 选项卡中不起作用

sql - 如何在 SELECT 部分中包含 BIT 类型列而不将其包含在 T-SQL 中的 GROUP BY 中?

html - rails 5 中具有线性渐变的背景图像