gpt4 book ai didi

ruby-on-rails - 获取满足某个条件的记录有两个has_many :through

转载 作者:行者123 更新时间:2023-12-04 05:44:33 24 4
gpt4 key购买 nike

假设我的 Rails 应用程序中有 3 个模型...Establishment、WasteType 和 EstablishmentWaste...我的问题是我想获取与特定废物类型关联的所有机构。这通常会通过 Establishment.where(waste_type_id: some_number) 完成,问题是 Establishment 有很多 WasteType,反之亦然,并且关联是通过第三方建立的...

有什么帮助吗?

下面的类和数据模型

enter image description here

机构

class Establishment < ActiveRecord::Base
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable

has_many :containers
has_many :establishment_wastes
has_many :waste_types, through: :establishment_wastes, :foreign_key => 'establishment_id'

include DeviseTokenAuth::Concerns::User
end

废物类型

class WasteType < ActiveRecord::Base

has_many :containers
has_many :establishment_wastes
has_many :establishments, through: :establishment_wastes, :foreign_key => 'waste_type_id'

end

EstablishmentWaste

class EstablishmentWaste < ActiveRecord::Base

belongs_to :establishment, :foreign_key => 'establishment_id'
belongs_to :waste_type, :foreign_key => 'waste_type_id'

end

所以数据模型应该是这样的

最佳答案

EstablishmentWaste 在这种情况下是一个连接表,所以查询应该是。

Establishment
.joins(:establishment_wastes)
.where('establishment_wastes.waste_type_id = ?', some_number)

快速提示!您不需要分配 :foreign_key => 'establishment_id' 因为 Rails 的默认行为是将外键分配给 model_id.

关于ruby-on-rails - 获取满足某个条件的记录有两个has_many :through,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322073/

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