2012-05-30 3 views
6

Я изучаю использование Ice Cube https://github.com/seejohnrun/ice_cube для повторяющихся событий. Мой вопрос: если мне тогда нужно получить какие-либо события, которые попадают в данный период времени (скажем, в день или в течение недели), есть ли лучший способ, чем проложить через них все так:Эффективное получение графиков 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 

Это кажется ужасно неэффективным, но я не уверен, как это сделать.

+0

Что вы в итоге сделали? im застревает в том же месте? спасибо – loloso

ответ

4

Это один подход - но то, что люди делают чаще, в конечном итоге денормализует свои графики в формате, который удобно запрашивать.

Возможно, у вас есть коллекция, называемая «ScheduleOccurrences», которую вы создаете каждую неделю /, а затем запрашиваете ее.

К сожалению, он должен работать таким образом, но придерживаться способа управления расписанием iCal привело к тому, что IceCube необходимо форматировать свои данные определенными способами (в частности, способами, которые могут соответствовать требованиям iCal RFC).

Недавно я размышлял о том, как будет выглядеть библиотека, что избаловало некоторые из этих ограничений, для большей гибкости, как это, но это определенно все еще немного отключено.

Надеюсь, что это поможет

+0

Спасибо, Джон. Но что происходит, когда пользователь просматривает календарь за неделю? – 99miles

+0

Возможно, вы могли бы генерировать ScheduleOccurrences так, как они нужны? Поэтому, если кто-то запрашивает расписание на следующей неделе, сервер может сохранить строки. В настоящее время я пытаюсь выяснить, как делать повторяющиеся события в моем rails ap ... – mscriven

Смежные вопросы