Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails获取记录与否有很多关系,其中有一个条件_Ruby On Rails_Postgresql_Rails Activerecord - Fatal编程技术网

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为空或按日期不可用。不可用日期!=?”,部分日期)。谢谢你为我指明了正确的方向:)