嗨伙计们,我有一个来自Devise的模型用户与这种关系:
user.rb
# Relationships references_many :houses,:dependent => :delete
house.rb
# Relationships referenced_in :user,:inverse_of => :houses embeds_many :deals
现在我对这种关系有一个模型处理:
embedded_in :house,:inverse_of => :deals
在我的routes.rb我有:
resources :houses do resources :deals end
当我尝试让用户在控制台中进行交易时:
ruby-1.9.2-p180 :009 > User.first.deals.first
Mongoid::Errors::MixedRelations: Referencing a(n) Deal document from the User document via a relational association is not allowed since the Deal is embedded.
解决方法
根据您提供的信息,用户与交易没有直接关系.
看来你试图这样做:
class User [...] references_many :houses,:dependent => :delete references_many :deals end class Deal [...] embedded_in :house referenced_in :user end
由于您的交易已嵌入到Houses中,因此您无法通过关系直接从用户访问它们.
这是Mongoid的一个已知限制.
您可以使用 :
@houses_that_match = House.where("deals.user_id" => @user.id) @deals = [] @houses_that_match.each do |house| @deals += house.deals.select { |deal| deal.user == @user } end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。