我试图在 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.
那么问题是什么,我正在定义关系和它们的倒数。是否不可能有与关系相反的不同数据?