根据日期重复记录 - Rails

时间:2014-09-30 12:30:51

标签: ruby-on-rails algorithm activerecord

我有一个包含开始和结束日期的事件表。

现在我想获取特定日期的事件。即如果我提供2014年5月1日,2004年5月2日,我需要在当天发生的所有事件(根据开始和结束日期)。我需要根据开始日期对事件进行分组,并将它们显示为列表。

现在的问题是如果事件发生在两天,比如5月1日和5月2日,我需要在列表中显示两次事件,如下所示:

1 May 2014
EventName

2 May 2014
EventName

我不知道怎么做...有谁可以帮我提出一个有效的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

为了让事件出现两次,我会将单独创建的集合添加到一起。

events = []
(start_date..end_date).each do |date|
  events += Event.where("start_date >= ? and end_date <= ?", date, date)
end
events 

答案 1 :(得分:1)

events = Event.where("start_date >= ? AND end_date <= ?", start_date, end_date)

display_events = Hash.new

(start_date..end_date).each do |date|
    display_events[date] << events.select { |event| event.start_date <= date and event.end_date >= date }
end

在这里,您最终会得到一个包含按日期分组的事件的哈希值。 (我在手机上,所以我无法测试它)

答案 2 :(得分:0)

尝试在每天获取并显示所有事件.i.e不基于事件迭代数据,而是根据事件日期进行迭代。

s_date = Date.parse('2010-09-29')
e_date = Date.parse('2010-09-30')

sd.upto(ed) do |date|
  @events = Event.event_on_date(date) 
end
相关问题