如何在Mongoid中实现多对多关系?例如,我们有一个用户,可以有多个通知,通知是 SpecificNotification 的父类。每个用户都可以收到 N 通知的警报(意味着通知,特定通知)每个通知(再次表示两者)都可以适用于 N 用户。
我尝试了以下内容:
user.rb中的class User
include Mongoid::Document
has_and_belongs_to_many :notifications
attr_accessible :notifications, :notification_ids
end
class Notification
include Mongoid::Document
has_and_belongs_to_many :users
attr_accessible :users, :user_ids
end
class SpecificNotification < Notification
field :something_specific
end
但是,当我创建 SpecificNotification 时,相关的用户不会更新 - 用户只会记录通知,而不是 SpecificNotifications 。怎么了?
答案 0 :(得分:0)
这不是你问题的直接答案,但这里我的2美分:
我建议您考虑非规范化您的数据模型。在我所拥有的社交网络上,我遇到了一个相当类似的问题:用户有很多通知,而且很多用户会收到同样的通知。
但是我没有做多对多关系,而是采用了noSQL风格,并且复制了每个用户的通知。这样,使用每个用户的名称和其他属性更容易自定义通知。我认为这将是使用mongodb进行建模的“正确方法”。
对于此特定字段也是如此,因为您使用的是mongoid,某些对象可能也可能没有某些字段。如果没有很多类型的通知包含大量字段,那么将该字段放在Notification模型上可能会更好。