ruby-on-rails - Mongoid中的模糊关系

标签 ruby-on-rails mongodb mongoid

我试图在 Post 模型中使用 viewer_ids 来保存 user_ids,并在 User 模型中使用 viewer_ids 来保存被查看的 post_ids。使用 Rspec 进行测试以添加/删除和访问来自用户的关系时,它工作得很好。但是当我使用 RABL 来查看帖子时——同时嵌入了用户数据——它会变得很困惑,并给我一个模棱两可的关系。

#Post class
belongs_to :user
has_and_belongs_to_many :viewers, class_name: 'User', inverse_of: :viewed  

#User class
has_many :users
has_and_belongs_to_many :viewed, class_name: 'Post', inverse_of: :viewers

Mongoid::Errors::AmbiguousRelationship in Posts#show

Problem:
Ambiguous relations :posts, :viewed defined on User.
Summary:
When Mongoid attempts to set an inverse document of a relation in memory, it needs to know which relation it belongs to. When setting :user, Mongoid looked on the class Post for a matching relation, but multiples were found that could potentially match: :posts, :viewed.
Resolution:
On the :user relation on Post you must add an :inverse_of option to specify the exact relationship on User that is the opposite of :user.

那么问题是什么,我同时定义了关系和它们的逆。关系的逆不能有不同的数据吗?

最佳答案

问题是在模型上具有同一类的多个关系时。因此,一旦添加了 n-n,每边就有 2 个用户关系和 2 个帖子关系。

#Post class
belongs_to :user, inverse_of: :posts
has_and_belongs_to_many :viewers, class_name: 'User', inverse_of: :viewed  

#User class
has_many :posts, inverse_of: :user
has_and_belongs_to_many :viewed, class_name: 'Post', inverse_of: :viewers

感谢 Duran 清理此问题 https://jira.mongodb.org/browse/MONGOID-2923?focusedCommentId=982950&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-982950

关于ruby-on-rails - Mongoid中的模糊关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585079/

相关文章:

ruby-on-rails - 使用 linux 脚本使连续的 rake 任务运行(启动、停止等)

ruby-on-rails - Backbone.js 服务器端验证和其他服务器端错误

java - 使用 MongoDB 更新文档中数组中的元素而不保留其类型

ruby-on-rails - MongoDB 对 system.namespaces 集合的冗余查询?

ruby-on-rails - 重构 LIst 排序方法的 Controller 代码

ruby-on-rails - (Ruby,Rails)模块和库中 SELF 的上下文......?

javascript - 无法在 Nodejs 中访问数据库结果,它总是返回 null

javascript - MEAN-Stack 使用 mongoose 在 MongoDB 中保存数组

ruby-on-rails - Mongoid 命名范围比较同一文档中的两个时间字段

ruby-on-rails - HABTM mongoid 追随者/追随者