Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否有多个且属于与联接表的关联?_Ruby On Rails_Database_Database Design - Fatal编程技术网

Ruby on rails 是否有多个且属于与联接表的关联?

Ruby on rails 是否有多个且属于与联接表的关联?,ruby-on-rails,database,database-design,Ruby On Rails,Database,Database Design,我有一张人员表和一张通知表 有很多人和6个通知,每个人都可能收到 我正在考虑一个通知表,其中只包含: “身份证” “通知名称” 但每个人都可以更改每个通知的某些特征 然后我会有一个连接表 “个人识别码” “通知id” “通知文本” 这看起来合适吗 然后这个人有很多通知,通知属于这个人。你要找的是一个关联 编辑: 这实际上可能不是你想要的。当你说“加入桌子”时,我误解了你的意思。您应该有一个Persons表和一个Notifications表,Person有许多通知,正如您所说,通知属于Person

我有一张人员表和一张通知表

有很多人和6个通知,每个人都可能收到

我正在考虑一个通知表,其中只包含: “身份证” “通知名称”

但每个人都可以更改每个通知的某些特征

然后我会有一个连接表

“个人识别码” “通知id” “通知文本”

这看起来合适吗


然后这个人有很多通知,通知属于这个人。

你要找的是一个关联

编辑

这实际上可能不是你想要的。当你说“加入桌子”时,我误解了你的意思。您应该有一个Persons表和一个Notifications表,Person有许多通知,正如您所说,通知属于Person。但是在Notifications表中,只需存储您说过要放在join表中的内容:
notification\u id
person\u id
notification\u text
,以及通知所需的任何其他属性。

我认为您的思路正确,只做了一些小的更改

我将创建一个
通知类型
,其中包含一个人可能收到的6种通知。然后您就有了
通知
,它将
通知类型
链接到带有实际消息的
人员

所以你的桌子看起来像

Person: id, name, ...
NotificationType: id, name, severity, ...
Notification: id, person_id, notification_type_id, message
你的模特会是

class NotificationType
  has_many :notifications
end

class Person
  has_many :notifications
end

class Notification
  belongs_to :person
  belongs_to :notification_type
end

希望这有帮助

但是,我应该将特定于某个人的通知设置放在哪里,例如他们修改的通知文本?如果您还有其他问题,请参阅我编辑的答案和评论。这会起作用,但我担心的是,如果我更改其中一个通知的名称,那么我必须更改通知表中具有该名称的所有记录,不仅仅是一张唱片。或者,如果通知获得更多非特定于个人的属性。例如,我可以有一个名为“提醒”的通知,它有一个属性“advance_time”,该属性的值是提醒发送事件前的小时数。然后我又不得不改变一堆记录,而不仅仅是一张。有意义吗?然后您需要创建不同的模型
NotificationType
来存储不同类型的通知。然后NotificationType有许多通知,通知属于NotificationType。并在通知表中添加一个
notification\u type\u id
列。