2012-05-30 9 views
6

Sto cercando di utilizzare Ice Cube https://github.com/seejohnrun/ice_cube per eventi ricorrenti. La mia domanda è, se ho bisogno di ottenere eventi che rientrano in un dato periodo di tempo (ad esempio, in un giorno o entro una settimana), c'è un modo migliore rispetto a scorrere tutti loro in questo modo:Recupero efficiente delle pianificazioni ice_cube per un determinato periodo di tempo

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 

Questo sembra orribilmente inefficiente, ma non sono sicuro di come fare altrimenti.

+0

Che cosa hai fatto a riguardo? mi sto bloccando nello stesso posto? grazie – loloso

risposta

4

Questo è un approccio, ma quello che le persone fanno più spesso finisce per denormalizzare i loro programmi in un formato che è facilmente interrogabile.

Si può avere una raccolta chiamata qualcosa come ScheduleOccurrences - che si costruisce ogni settimana/e poi si interroga.

Sfortunatamente deve funzionare in questo modo, ma attenendosi al modo iCal di gestire le pianificazioni ha portato IceCube a dover formattare i suoi dati in determinati modi (in particolare modi in grado di allinearsi ai requisiti di iCal RFC).

Ho riflettuto recentemente su come sarebbe una libreria che ha scosso alcune di quelle restrizioni, per una maggiore flessibilità come questa - ma è decisamente ancora un po 'spenta.

Spero che questo aiuti

+0

Grazie, John. Ma cosa succede quando l'utente naviga nel calendario la prossima settimana? – 99miles

+0

Forse potresti generare ScheduleOccurrences quando sono necessarie? Quindi, se qualcuno richiede la pianificazione della prossima settimana, il server potrebbe salvare le righe. Attualmente sto cercando di capire come fare gli eventi ricorrenti nei miei binari ap ... – mscriven

Problemi correlati