我正在尝试在 Rails 中设置通知系统以及 mongoid (但我不认为这是特定于 mongoid 的)。
基本结构是这样的 - 每个通知都有一个通知者(负责通知的人)和一个通知人(接收通知的人)。当用户 A 对用户 B 的帖子发表评论时(例如在博客系统中),用户 A 成为通知者,用户 B 是被通知者。
用户.rb
# nothing in here
通知.rb
has_one :notifier, :class_name => "User"
belongs_to :notifiee, :class_name => "User"
但是,当我这样做时:
@notification = Notification.new
@notification.notifier = current_user
@notification.notifiee = User.first #Just for the sake of the example
@notification.save
我收到此错误:
问题:当向 Notification#notifier 添加一个(n)用户时,Mongoid 无法确定要设置的反向外键。尝试的键是'notifiee_id'。摘要:当向关系添加文档时,Mongoid 尝试将新添加的文档链接到内存中关系的基础,并在数据库端设置外键以链接它们。在这种情况下,Mongoid 无法确定反向外键是什么。解决方案:如果不需要反向,例如 belongs_to 或 has_and_belongs_to_many,请确保在关系上设置 :inverse_of => nil。如果需要逆,很可能无法从关系的名称中找出逆,您需要明确地告诉 Mongoid 关系上的逆是什么。
我可能做错了什么?或者,有没有更好的方法来模拟这个?
任何帮助深表感谢!谢谢你。