检查另一小时范围内是否包含小时范围

时间:2017-08-30 16:29:39

标签: ruby-on-rails ruby datetime

我有一个开始时间和一个结束时间。我想检查这个小时范围是否包含在我的模型中定义的小时范围内。

例如,我有一个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)

此示例代码只选择在对象时间范围内包含给定时间范围的对象。

我想要涵盖所有案例是否存在一种红宝石方法,用于检查时间范围是否在另一个时间范围内部分包含。

1 个答案:

答案 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