在Rails应用程序中执行急切加载时,我试图过滤嵌套的关联记录。
我有三种型号
w_flow_step.rb
class WFlowStep < ApplicationRecord
has_many :work_orders, through: :vendors
has_many :vendors
end
vendor.rb
class Vendor < ApplicationRecord
has_many :work_orders
has_many :w_flow_step, class: 'WFlowStep', foreign_key: 'w_flow_step_id'
end
work_order.rb
class WorkOrder < ApplicationRecord
belongs_to :w_flow_step
belongs_to :vendor, optional: true
end
我有40个供应商,w_flow_step = 10,只有两个供应商具有work_order。
做类似的事情
@w_flow_step = WFlowStep.includes(vendors: :work_orders).find(10)
work_orders = @w_flow_step.vendors.first.work_orders
work_orders也包含不属于@w_flow_step的条目,并且
做类似的事情
@w_flow_step = WFlowStep.includes(vendors: :work_order).where(work_orders: { w_flow_step_id: 10 }).find(10)
并访问使用的供应商总数
@w_flow_step.vendors.size # which give me 2
但是我期望它返回否。的供应商= 40 ,并且在执行中
@w_flow_step.vendors.first.work_orders
我希望它仅返回分配给该供应商的工作订单,并且其w_flow_step_id仅等于10,这就是它要返回的工作订单。
但是我想加载所有供应商,而work_order仅属于@w_flow_step。