在给定时间段内有效地检索ice_cube计划

99m*_*les 6 ruby-on-rails ruby-on-rails-3 ice-cube

我正在考虑使用Ice Cube https://github.com/seejohnrun/ice_cube进行重复活动.我的问题是,如果我需要获得任何属于给定时间段内的事件(例如,在一天或一周内),是否有更好的方法来循环它们所有这样:

items = Records.find(:all)
items.each do |item|
  schedule = item.schedule
  if schedule.occurs_on?(Date.new)
      #if today is a recurrence, add to array
  end
end
Run Code Online (Sandbox Code Playgroud)

这看起来效率非常低,但我不知道怎么回事.

Joh*_*ohn 5

这是一种方法 - 但人们更经常做的是将他们的日程安排非规范化为可方便查询的格式。

您可能有一个名为 ScheduleOccurrences 之类的集合 - 您每周构建/然后查询它。

不幸的是它必须以这种方式工作,但坚持 iCal 管理计划的方式导致 IceCube 需要以某些方式格式化其数据(特别是可以符合 iCal RFC 要求的方式)。

我最近一直在思考一个图书馆应该是什么样子,它可以摆脱一些限制,以获得像这样更大的灵活性——但它肯定还有点偏差。

希望这可以帮助