ruby-on-rails – 查找与Rails中的范围重叠的记录
发布时间:2020-12-16 20:17:58 所属栏目:百科 来源:网络整理
导读:所以,我有一个事件模型有一个starts_at和ends_at列,我想查找发生在一系列日期的事件. 我想出了这个named_scope(范围通常是一个月): named_scope :in_range,lambda { |range| {:conditions = [ 'starts_at BETWEEN ? AND ? OR ends_at BETWEEN ? AND ?',rang
所以,我有一个事件模型有一个starts_at和ends_at列,我想查找发生在一系列日期的事件.
我想出了这个named_scope(范围通常是一个月): named_scope :in_range,lambda { |range| {:conditions => [ 'starts_at BETWEEN ? AND ? OR ends_at BETWEEN ? AND ?',range.first,range.last,range.last]} } 哪些工作如预期. 但是,如果一个事件从前一个月开始,并在该范围之后的月份结束,则不会显示.有没有办法以正确的方式找到这些事件? 解决方法
有四种情况:
Start End 1. |-----| 2. |------| 3. |-------------| 4. |------| 你的named_scope只会得到1,2和4的情况.所以你只需要添加: named_scope :in_range,lambda { |range| {:conditions => [ '(starts_at BETWEEN ? AND ? OR ends_at BETWEEN ? AND ?) OR (starts_at <= ? AND ends_at >= ?)',range.last ]} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |