2012-05-30 6 views
6

Ich untersuche mit Ice Cube https://github.com/seejohnrun/ice_cube für wiederkehrende Ereignisse. Meine Frage ist, wenn ich dann irgendwelche Ereignisse bekommen muss, die innerhalb eines bestimmten Zeitraums fallen (sagen wir an einem Tag oder innerhalb einer Woche), gibt es einen besseren Weg als sie alle durchzugehen:Effizientes Abrufen von ice_cube-Zeitplänen für einen bestimmten Zeitraum

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 

Das scheint schrecklich ineffizient, aber ich bin mir nicht sicher, wie ich es sonst tun könnte.

+0

Was hast du am Ende getan? Ich bin am selben Ort stecken geblieben danke – loloso

Antwort

4

Das ist ein Ansatz - aber was die Leute öfter tun, endet damit, ihre Zeitpläne in ein Format zu zerlegen, das bequem abfragbar ist.

Möglicherweise haben Sie eine Sammlung namens "ScheduleOccurrences", die Sie jede Woche erstellen und dann stattdessen abfragen.

Leider muss es auf diese Weise funktionieren, aber die Einhaltung der iCal-Art der Verwaltung von Zeitplänen hat dazu geführt, dass IceCube seine Daten auf bestimmte Arten formatieren muss (insbesondere mit den Anforderungen des iCal RFC).

Ich habe in letzter Zeit etwas darüber nachgedacht, wie eine Bibliothek aussehen würde, die einige dieser Einschränkungen abschüttelte, für mehr Flexibilität wie diese - aber es ist definitiv immer noch ein bisschen aus.

Hoffe, das hilft

+0

Danke, John. Aber was passiert, wenn der Benutzer nächste Woche im Kalender vorbeiblättert? – 99miles

+0

Vielleicht könnten Sie ScheduleOccurrences generieren, wie sie benötigt werden? Wenn also jemand den Plan der nächsten Woche anfordert, könnte der Server die Zeilen speichern. Ich versuche gerade herauszufinden, wie man Ereignisse in meinem Rails-App wiederholt ... – mscriven

Verwandte Themen