Как включить повторяющиеся напоминания для разных пользователей в 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 - динамические значения

Другие вопросы по тегам