活动记录 - 在查找多对多关系时避免记录实例化



我的 Rails 6/PostgreSQL 应用程序中有两个模型,它们具有多对多关系;CarDriver.目标是获取所有完全没有关联的记录(汽车((驱动程序(。目前,这是使用 Ruby (2.6.3( 完成的,如下所示:

result = []
Car.all.each do |car|
result << car.id if car.drivers.empty?
end

是否有避免实例化每条记录的活动记录表达式?

尝试:

Car.left_joins(:drivers).where(drivers: { id: nil }).pluck(:id)

您首先将"与司机一起加入汽车"以将所有汽车和驱动器与其关联,然后在where中过滤没有司机的汽车,最后仅选择一列(id(和pluck

相关内容

最新更新