В настоящее время пользователи моего приложения устанавливают конкретную дату и время для одного напоминания (используя драгоценный камень Chronic).
У меня есть задание cron, которое запускается каждые 10 минут и проверяет, является ли время в напоминании ‹ Time.now
, и в этот момент оно отправляет напоминание и помечает это напоминание как отправленное.
Однако я хочу, чтобы они могли указать повторяющиеся напоминания. Клиент должен иметь возможность сказать: «Каждый день в 10 утра».
Кажется, я могу использовать ice_cube
для повторяющейся части. Затем я использую Chronic, чтобы придумать время начала, которое будет иметь день и время повторения.
Но у меня нет хорошего способа сделать это повторяющимся, так как это не отдельные события в базе данных.
Вот что я пробовал:
``` напоминание = response.body['results'] #массив повторяющихся напоминаний с start_epoch и 'via' d {reminder}
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
```
Вопросы:
- Есть ли способ узнать, когда напоминание было отправлено, без записи каждого конкретного ежедневного напоминания в базу данных?
- Есть ли более элегантный способ для пользователя в текстовой строке определить повторение?