has_many和belongs_to与联接表的关联?

时间:2011-02-19 19:32:03

标签: ruby-on-rails database database-design

我有一个Persons表和一个Notifications表。

每个人都可以接收很多人和6个通知。

我正在考虑使用Notifications表: 'ID' 'notifitcation_name'

但是每个人都可以改变每个通知的某些特征。

然后我会有一个

的联接表

'PERSON_ID' 'notification_id' 'notification_text'

这看起来合适吗?

然后Person has_many Notifications and Notification belongs_to Person?

2 个答案:

答案 0 :(得分:0)

您正在寻找的是has_and_belongs_to_many协会。

修改
这实际上可能不是你想要的。当你说“加入桌子”时我误解了你。您应该有一个Persons表和Notifications表,而Person有许多Notifications,Notification属于Person,如您所说。但是在通知表中,只需存储您在联接表中添加的内容:notification_idperson_idnotification_text以及通知需要具有的任何其他属性。

答案 1 :(得分:0)

我认为你走在正确的轨道上,只做了一些小改动。

我会创建一个NotificationType,其中包含一个人可以收到的6个可能的通知。然后,您有NotificationNotificationTypePerson与实际消息相关联。

所以你的表看起来像

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

希望这会有所帮助。