我有一个开始时间和一个结束时间。我想检查这个小时范围是否包含在我的模型中定义的小时范围内。
例如,我有一个start_time="12:30"
和一个end_time="13:30"
。
我的模型包含2个具有此时间定义的对象:
Object1有start =" 12:00"并结束=" 13:00"
Object2有start =" 13:00"并结束=" 14:00"
我想创建一个select
,其比较应该与给定上面定义的start_time和end_time的Object1和Object2相匹配。
这是我的示例代码:
Model.all.select(|object| (object.start<=start_time and object.end<=end_time)
此示例代码只选择在对象时间范围内包含给定时间范围的对象。
我想要涵盖所有案例是否存在一种红宝石方法,用于检查时间范围是否在另一个时间范围内部分包含。
答案 0 :(得分:0)
您可以执行以下操作:
Model.where(
"(TIME :start_time, TIME :end_time) OVERLAPS (start, end)",
start_time: "12:30",
end_time: "13:30"
)
另外,请检查以下答案:https://stackoverflow.com/a/22639669/1155142