活动记录查询日期时间重叠

时间:2015-04-23 09:57:07

标签: ruby-on-rails activerecord

我正在做一个简单的活动记录查询,通过以下方式删除与特定日期重叠的所有模型,如下所示。

这只是删除完全匹配的可用对象。即如果预订的会话是从下午1点到下午2点,并且trainer从下午12点到下午5点有空,则它仅从下午1点到下午2点(不是下午1:15 - 下午2点15分等)删除时段。为什么这不起作用?

更新

以下工作

@trainer_avails = TrainerAvailability.where(id: params[:trainer_avail_id]).where(
 'start_time <= ? AND end_time >= ?',
 DateTime.parse(params[:start_time]) + 1.hour, DateTime.parse(params[:start_time])
 )

3 个答案:

答案 0 :(得分:2)

@trainer_avails = TrainerAvailability.where(id: params[:trainer_avail_id]).where(
   'start_time <= ? AND end_time >= ?',
    @session_detail.end_time, @session_detail.start_time
    )

答案 1 :(得分:1)

不遵循100%您想要实现的目标,但如果您想要删除两个时段之间的所有会话,可以尝试下面的内容。

TrainerAvailability.where('start_time <= ? and end_time >= ?', @session_detail.end_time, @session_detail.start_time)

答案 2 :(得分:0)

您可以使用destroy_all方法来减少代码:

TrainerAvailability.destroy_all('start_time <= ? and end_time >= ?', @session_detail.start_time, @session_detail.end_time)