我有HomeMaker
和PerDateUnavailability
模型。HomeMaker
has_many per_date_unavailabilities
。我希望所有未在per_date_unavailability中有记录的房屋制造商和有记录但在per_date_unavailabilties.unavailable_date
= somedate时没有记录的房屋制造商
当我想要没有PerDateUnavailability记录的HomeMaker使用时,通常会做第一部分 HomeMaker.includes(:per_date_unavailabilities).where(per_date_unavailabilities: {id: nil})
条件的第二部分使用 HomeMaker.joins(:per_date_unavailabilities).where.not(per_date_unavailabilities: {unavailable_date: Date.today})
我该如何混合?
您需要的sql有点像这样:
select a.*
from home_makers a left join per_date_unavailabilities b
on a.id = b.home_maker_id
where b.home_maker_id is NULL
or b.unavailable_date IS NOT ?;
or
在ActiveRecord中,表达该条款有些困难,最好不要与之抗衡。(在OP评论后编辑)
HomeMaker.joins("LEFT JOIN per_date_unavailabilities on per_date_unavailabilities.home_maker_id = home_makers.id")
.where("per_date_unavailabilities.home_maker_id IS NULL OR per_date_unavailabilities.unavailable_date != ?", somedate)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句