我的 Rails 6/PostgreSQL 应用程序中有两个模型,它们具有多对多关系;Car
和Driver
.目标是获取所有完全没有关联的记录(汽车((驱动程序(。目前,这是使用 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
。