首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoid::Errors::AmbiguousRelationship:

Mongoid::Errors::AmbiguousRelationship:
EN

Stack Overflow用户
提问于 2014-12-08 11:54:55
回答 1查看 107关注 0票数 0

talk_groups表

代码语言:javascript
复制
field :parent_topic_id, type: Integer, default: -1
has_many :topics, :dependent => :destroy
belongs_to :parent_topic, :class_name => 'Topic', :foreign_key => :parent_topic_id

主题表

代码语言:javascript
复制
belongs_to :talk_group

上面的关系在sqlite/mysql上运行得很好,但在mongoid上就不起作用了,因为当一个模型不能有多个并且belongs_to与另一个相同的模型时。

parent_topic.talk_group将显示Mongoid::Errors::AmbiguousRelationship: error

EN

回答 1

Stack Overflow用户

发布于 2014-12-08 22:22:39

这个问题并不是因为“当一个模型不能有多个并且belongs_to与另一个相同的模型时”。

这是因为当mongoid查看topic模型时,它无法知道talk_group字段是否引用了talk_group模型中的topicsparent_topic关系。

mongoid提供了一个选项来避免这种"AmbiguousRelationship“它是inverse_of选项...

因此,为了解决这个问题,您应该将topic模型修改为

代码语言:javascript
复制
belongs_to :talk_group, inverse_of: :parent_topic

并且talk_group模型应该变成

代码语言:javascript
复制
has_many :topics, dependent: :destroy
belongs_to :parent_topic, class_name: 'Topic'
# you can add inverse_of option on this side as well although it's not mandatory
belongs_to :parent_topic, class_name: 'Topic', inverse_of: :talk_group

有关更多信息,请参阅this question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27351164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档