Ruby on rails rails获取记录与否有很多关系,其中有一个条件
我有一个Ruby on rails rails获取记录与否有很多关系,其中有一个条件,ruby-on-rails,postgresql,rails-activerecord,Ruby On Rails,Postgresql,Rails Activerecord,我有一个HomeMaker和PerDateUnavailability型号HomeMaker每个日期都有许多不可用项。我想要所有没有按日期不可用记录的家庭主妇,以及有记录但没有按日期不可用记录的家庭主妇。不可用日期=somedate 当我想让家庭主妇没有PerDateUnavailability记录时,我通常使用HomeMaker.includes(:per_date\u unavailabilities)。其中(per_date\u unavailabilities:{id:nil}) 条件的
HomeMaker
和PerDateUnavailability
型号HomeMaker
每个日期都有许多不可用项
。我想要所有没有按日期不可用记录的家庭主妇,以及有记录但没有按日期不可用记录的家庭主妇。不可用日期=somedate
当我想让家庭主妇没有PerDateUnavailability记录时,我通常使用HomeMaker.includes(:per_date\u unavailabilities)。其中(per_date\u unavailabilities:{id:nil})
条件的第二部分使用HomeMaker.joins(:per_date\u unavailabilities)。where.not(per_date\u unavailabilities:{unavailable\u date:date.today})
如何混合这些内容?您需要的sql有点像:
选择一个*
从家庭制造商a按日期左连接\U不可用性b
在a.id=b.home\u maker\u id上
其中b.home\u maker\u id为空
或者b.日期不可用?;
在ActiveRecord中,表达或
子句有点困难,最好我们不反对它。(根据OP的评论进行编辑)
HomeMaker.joins(“左JOIN per_date\u unavailabilities on per_date\u unavailabilities.home\u maker\u id=home\u maker.id”)
.where(“per_date\u unavailabilities.home\u maker\u id为空或per_date\u unavailabilities.unavailable\u date!=?”,somedate)
为什么你不能把它们链接起来HomeMaker.joins(:per\u date\u unavailabilities)。where.not(per\u date\u unavailabilities:{unavailabilities\u date:date.today})。where(per\u date\u unavailabilities:{id:nil})
这是最后起作用的地方<代码>HomeMaker.joins(“按日期左加入不可用按日期不可用。home\u maker\u id=home\u makers.id”)。其中(“按日期不可用。home\u maker\u id为空或按日期不可用。不可用日期!=?”,部分日期)。谢谢你为我指明了正确的方向:)