我正在做一个简单的活动记录查询,通过以下方式删除与特定日期重叠的所有模型,如下所示。
这只是删除完全匹配的可用对象。即如果预订的会话是从下午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])
)
答案 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)