1

我目前有一个计费系统,其中每晚脚本检查从脚本运行之日起一个月到期的订阅,例如:

 Subscription.where(:expires => (Date.today + 30.days)).find_each do |sub|
  unless sub.month_reminder_sent
    reminder.total += 1
    reminder.subscriptions << sub
    BillingMailer.monthly_reminder(sub.user).deliver
    sub.month_reminder_sent = true
  end

我还有另一套要在到期前一周运行。如果未续订,则子会自动过期(我只是检查sub.expiry_date尚未通过以检查子是否处于活动状态)。

如果服务器停机,我需要采取哪些应急措施?或者脚本没有运行或失败?(因此缺少一些记录。)

以上甚至是进行计费的最佳方式吗?还是我不必要地担心,以上就足够了?

4

1 回答 1

0

在您的模型中添加另一个日期列(即已处理的日期),您需要在检查期间对其进行更新,然后向您的脚本添加一个附加条件,该条件将处理所有过期记录+这些之前未处理的记录。如果服务器关闭或脚本未正确执行 - 您将在下次处理丢失的记录。还要考虑一些报告,即:处理的记录数、先前运行处理的记录数等。

于 2013-02-04T21:00:01.970 回答