例如,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
factory.workers.where.not(confirmed_at:nil).where(job_roles {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)