6

定期的なイベントにIce Cube https://github.com/seejohnrun/ice_cubeを使用することを検討しています。私の質問は、特定の期間内 (たとえば、1 日または 1 週間以内) に該当するイベントを取得する必要がある場合、次のようにすべてをループするよりも良い方法はありますか?

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

これは恐ろしく非効率に思えますが、他にどうすればよいかわかりません。

4

2 に答える 2

4

これは 1 つのアプローチですが、より頻繁に行われているのは、スケジュールを非正規化して便利にクエリ可能な形式にすることです。

ScheduleOccurrences のようなものと呼ばれるコレクションがあるかもしれません - 毎週作成し、代わりにそれをクエリします。

残念なことに、このように動作する必要がありますが、スケジュールを管理する iCal の方法に固執することで、IceCube は特定の方法 (具体的には iCal RFC の要件と一致する方法) でデータをフォーマットする必要が生じました。

私は最近、このような柔軟性を高めるために、これらの制限のいくつかを振り払ったライブラリがどのように見えるかについていくつか考えていましたが、それでもまだ少しずれています.

お役に立てれば

于 2012-06-04T16:05:09.097 に答える