Добрый день, господа. Прошу прощения за, возможно, глупый вопрос, но понимание никак не приходит.
Есть задача: нужно создавать события в календаре, в зависимости от атрибута модели(:repeat) событие может быть ежедневным, еженедельным, ежемесячным, ежегодным. В каждом конкретном случае создается набор событий вперед (на каждый день, месяц, неделю, год). Поскольку создание 365 событий занимает много времени, процесс уводится в фоновый режим(поток). Вот мой метод create:
def create
@event = current_user.events.create(event_params)
Thread.new do
case @event.every
when 1
for i in 1..365
@event = current_user.events.create(event_params)
@event.update_attributes( start_at: @event.start_at + i.day )
@event.update_attributes( end_at: @event.end_at + i.day )
end
when 2
for i in 1..53
@event = current_user.events.create(event_params)
@event.update_attributes( start_at: @event.start_at + i.week )
@event.update_attributes( end_at: @event.end_at + i.week )
end
when 3
for i in 1..11
@event = current_user.events.create(event_params)
@event.update_attributes( start_at: @event.start_at + i.month )
@event.update_attributes( end_at: @event.end_at + i.month )
end
when 4
for i in 1..10
@event = current_user.events.create(event_params)
@event.update_attributes( start_at: @event.start_at + i.year )
@event.update_attributes( end_at: @event.end_at + i.year )
end
end
end
end
Как переделать сие, применив гем delayed_job? Где правильнее всего хранить всю эту логику? Разумно ли оставить все в методе контроллера? Заранее спасибо за помощь.