很抱歉,如果已在其他地方发布,则不确定要搜索的内容。
我的此查询目前正在使用.select
,但必须有更好的方法可以在不使用可怕的.select
的情况下获得相同的结果吗?任务是:找到在班次应该开始的6小时内创建的所有班次取消:
ShiftCancellation.select{|c| c.created_at > c.shift.date_time - 6.hours}
ShiftCancellation belongs_to :shift
,反之亦然。
我在使用Postgres,因此SQL独有的查询将无效。
答案 0 :(得分:0)
您可以加入其他表格以允许查询所有字段,但我不确定获取日期的最佳方式是什么 - 6小时是。我认为DATE_SUB可能就是您所需要的:
ShiftCancellation.joins(:shift).where("shift_cancellations.created_at > DATE_SUB(shifts.date_time, INTERVAL 6 HOUR)"}
答案 1 :(得分:0)
解决了它。
ShiftCancellation.joins(:shift).where("shift_cancellations.created_at > (shifts.date_time - interval '6 hours')")