在我的rails(使用postgresql)项目中,我有一个包含items
和start_date
字段的事件模型。事件日期范围不能重叠。我希望通过活动获得所有日期。
例如:
end_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
]
但我认为这很难看,是否有一种优雅的方式来解决我的问题?也许使用postgresql但我是postgresql的新手。
答案 0 :(得分:0)
在模型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