目前,我的应用程序的用户为单个提醒设置了特定的日期和时间(使用 Chronic gem)。
我有一个每 10 分钟运行一次的 cron 作业,并检查提醒中的时间是否为 <Time.now
此时,它会发送提醒并将该提醒标记为已发送。
但是,我希望他们能够指定重复提醒。客户应该能够说“每隔一天上午 10 点”。
我可以使用ice_cube
它似乎经常出现的部分。然后我使用 Chronic 来计算开始时间,其中包含日期和循环时间。
但我没有一个好的方法让它重复发生,因为这些不是数据库中的单独事件。
这是我尝试过的:
```reminder = response.body['results'] #array of recurring alerts with start_epoch and '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
```
问题:
- 有没有办法在不将每个特定的每日提醒写入数据库的情况下判断何时发送提醒?
- 有没有更优雅的方式让用户在文本字符串中定义重复出现?