2011-10-17 23 views
4

傢伙,您好我有一個型號的用戶從設計與關係:Mongoid ::錯誤:: MixedRelations:Mongoid +設計

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. 

回答

1

根據您提供的信息,用戶不是直接返回高興達成協議。

看來你嘗試做:

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 } 
end