class User include MongoID::document fIEld :uID fIEld :name fIEld :user_hash embeds_many :watchListsendclass WatchList include MongoID::document fIEld :HTML_url fIEld :description #fIEld :name fIEld :fork_,:type => Boolean fIEld :forks,:type => Integer fIEld :watchers,:type => Integer fIEld :created_at,:type => DateTime fIEld :pushed_at,:type => DateTime fIEld :avatar_url embedded_in :user has_and_belongs_to_many :Tagsend
监视列表还应引用many to many标签模型,反之亦然:
class Tag include MongoID::document fIEld :name,type: String has_and_belongs_to_many :watchListsend
无论如何,这导致了一个错误,似乎不可能出现这种“混合”关系:
MongoID::Errors::MixedRelations (Referencing a(n) WatchList document from the Tag document via a relational association is not allowed since the WatchList is embedded.): app/controllers/home_controller.rb:53:in `tagging'
UPDATE
请注意,必须删除监视列表(user.watchLists.clear),而不是每天重新创建(user.watchLists.find_or_create_by)四次,而Tag / s必须是持久的,与之前相关的嵌入式监视列表(. ..无论如何,我不确定是否可能,因为先前的下降/创建).
UPDATE更新(坦克到durran支持)
不,这是不可能的:如果您清除嵌入式文档,那么ID也会消失,每次创建新文件时都会生成新的文件.
你对如何克服这个问题有任何想法吗?
在referenced relations(三个不同的系列)中拆分所有三个模型是否更好?
class User include MongoID::document embeds_many :watchListsendclass WatchList include MongoID::document embedded_in :user has_and_belongs_to_many :Tags,inverse_of: nilendclass Tag include MongoID::documentend
但是,如果必须在标签中引用关注列表,则可以手动维护两侧的ID数组,如Tyler已经指出的那样.
总结以上是内存溢出为你收集整理的ruby-on-rails – Mongoid ::错误:: MixedRelations全部内容,希望文章能够帮你解决ruby-on-rails – Mongoid ::错误:: MixedRelations所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)