我有一个来自Devise的Model User与这种关系:
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.发布于 2012-01-23 00:00:43
使用您提供的信息,用户不会直接与交易相关。
看起来你想要做的是:
class User
[...]
references_many :houses, :dependent => :delete
references_many :deals
end
class Deal
[...]
embedded_in :house
referenced_in :user
end由于您的交易嵌入到房屋中,因此您无法通过关系直接从用户访问它们。这是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 }
endhttps://stackoverflow.com/questions/7796806
复制相似问题