二级ActiveRecord查询

问题描述 投票:0回答:1

例如,Factory has_many Worker 通过 JobRole。

工厂型号:

has_many :workers, through: :job_roles

工人型号:

has_many :job_roles
has_many :factories, through: :job_roles

工作榜样:

belongs_to :worker
belongs_to :factory

查询:

factory.job_roles.where(heavy_lifting:true, sensitive_area: false).workers.where.not(confirmed_at:nil).pluck(:work_capacity)

第一个

.where
查询是一个 ActiveRelation,对其调用
.workers
失败。

我需要提取工厂内具有特定工作角色的工人的工作能力。

除了循环第一个查询将工作人员的工作能力放入数组之外,还有什么方法可以做到这一点?

即:

applicable_job roles = factory.job_roles.where(heavy_lifting:true, sensitive_area: false)

work_capacities = []

applicable_job_roles.each do |job_role|
 if job_role.confirmed_at != nil
 work_capacities << job_role.work_capacity
end
ruby-on-rails activerecord
1个回答
0
投票
factory.workers.where.not(confirmed_at:nil).where(job_roles {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)
© www.soinside.com 2019 - 2024. All rights reserved.