Как включить повторяющиеся напоминания для разных пользователей в ruby?
В настоящее время пользователи моего приложения устанавливают конкретную дату и время для одного напоминания (используя драгоценный камень Chronic).
У меня есть задание cron, которое запускается каждые 10 минут и проверяет, является ли время в напоминании < Time.now
в этот момент он отправляет напоминание и помечает это напоминание как отправленное.
Однако я хочу, чтобы они могли указывать повторяющиеся напоминания. Клиент должен иметь возможность сказать: "Каждый день в 10 утра".
я могу использовать ice_cube
для повторяющейся части это кажется. Затем я использую Chronic, чтобы придумать время начала, которое будет иметь день и повторяющееся время.
Но у меня нет хорошего способа сделать это повторяющимся, поскольку это не отдельные события в базе данных.
Вот что я попробовал:
`` напоминание = response.body['результаты'] # массив повторяющихся напоминаний с start_epoch и 'via' d {напоминанием}
reminder.count.times do |i|
schedule = IceCube::Schedule.new(now = Time.at(reminder[i]['value']['start_epoch'])) # get the initial start day and time
schedule.add_recurrence_rule(IceCube::Rule.daily) #makes this a daily recurring, but how can I allow this to be customizable?
if schedule.next_occurrence(Chronic.parse('today at 12:01AM')) < Time.now # Check if today's occurence has happened yet
bot_response = BotResponse.get_bot_response(bot_client_id, reminder[i]['value']['bot_input_keyword'])
if reminder[i]['value']['via'] == 'slack'
slack_response = BotMessage.send_slack(reminder[i]['value']['slack_channel'],
bot_response[:bot_response])
d {slack_response}
end #if
end #if
end #do
`` `
Вопросы:
- Есть ли способ узнать, когда напоминание было отправлено, без записи каждого конкретного ежедневного напоминания в базу данных?
- Есть ли более элегантный способ для пользователя в текстовой строке определить повторение?
1 ответ
Рассматривали ли вы возможность использования gem для реализации повторяющихся задач с помощью заданий cron? Я думаю, что вы должны быть в состоянии установить время расписания динамически в файле ever schedule.rb, см. Связанную проблему здесь: Rails - всякий раз, когда gem - динамические значения