gpt4 book ai didi

ruby-on-rails - 事件记录 : get all dates in multiple ranges

转载 作者:行者123 更新时间:2023-11-29 13:51:12 25 4
gpt4 key购买 nike

在我的 rails(使用 postgresql)项目中,我有带有 start_dateend_date 字段的事件模型。事件日期范围不能重叠。我想获取所有日期和事件。

例如:

| event id | start_date | end_date   |
| :------: | :--------: | :--------: |
| 51 | 2011-09-27 | 2011-09-29 |
| 70 | 2014-07-23 | 2014-07-26 |
| 71 | 2014-06-30 | 2014-07-01 |
| 77 | 2016-03-10 | 2016-03-11 |

输出:

[
2011-09-27,
2011-09-28,
2011-09-29,
2014-07-23,
2014-07-24,
2014-07-25,
2015-08-26,
2014-06-30,
2014-06-31,
2014-07-01,
2016-03-10,
2013-03-11
]

我尝试做很多事情并用这段代码得到结果:

Event
.pluck(:start_date, :end_date)
.map(&:compact).reject(&:empty?) # I have events with null start_date and end_date
.map{ |start_date, end_date|
(start_date.to_date..end_date.to_date).map(&:to_s)
}
.flatten

但是我觉得很丑,有没有优雅的方法解决我的问题?也许使用 postgresql,但我是 postgresql 的新手。

最佳答案

模型event.rb

def get_dates
[created_at, updated_at]
end

并获取所有日期:

Event.all.map(&:get_dates).flatten

更新

更改函数 get_dates。

def get_dates
(Date.parse(start_date.to_s)..Date.parse(end_date.to_s)).to_a
end

关于ruby-on-rails - 事件记录 : get all dates in multiple ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com