gpt4 book ai didi

ruby-on-rails - Mongoid::Errors::MixedRelations: Mongoid + 设计

转载 作者:行者123 更新时间:2023-12-01 05:37:38 24 4
gpt4 key购买 nike

我有一个来自 Devise 的模型用户具有这种关系:
用户名

# Relationships  
references_many :houses, :dependent => :delete
现在我有一个用脚手架创建的模型屋:
房子.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

由于您的交易嵌入到房屋中,因此您无法通过关系直接从用户访问它们。
这是 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

关于ruby-on-rails - Mongoid::Errors::MixedRelations: Mongoid + 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com