【发布时间】:2016-03-23 04:23:00
【问题描述】:
假设我的 Rails 应用中有 3 个模型...Establishment、WasteType 和 EstablishmentWaste...我的问题是我想获取与某种废物类型相关的所有机构。这通常会使用Establishment.where(waste_type_id: some_number) 来完成,问题是Establishment 有很多WasteType,反之亦然,并且关联是通过第三方进行的...
有什么帮助吗?
下面的类和数据模型
成立
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
企业浪费
class EstablishmentWaste < ActiveRecord::Base
belongs_to :establishment, :foreign_key => 'establishment_id'
belongs_to :waste_type, :foreign_key => 'waste_type_id'
end
所以数据模型应该是这样的
【问题讨论】:
标签: ruby-on-rails associations has-many-through has-many