我已经制定了订阅计划,该计划将每月,每三个月和每年自动向用户收费。问题是,如何计算向用户收费的确切日期?我们不能每30天收费一次吧?因为并非所有月份都有30天。如果我们按照购买日期收费,则在1月30日购买计划的人将不会在2月支付费用,因为2月没有30人。这是一个复杂的问题。我该如何解决?
PS:我在轨道上使用红宝石
您可以存储subscribed_on
日期和number_of_payments
用户已经创建。然后通过增加number_of_months
和使用>>
date方法来计算下一个付款日期。>>
考虑一个月中的天数:
# at subscription date and first payment
subscribed_on = Date.today # in this example: 2015-01-30
number_of_payments = 1
next_payment_date = subscribed_on >> number_of_payments
#=> 2015-02-28
# after next payment (on 2015-02-28)
number_of_payments = number_of_payments + 1
next_payment_date = subscribed_on >> number_of_payments
#=> 2015-03-30
# after next payment (on 2015-03-30)
number_of_payments = number_of_payments + 1
next_payment_date = subscribed_on >> number_of_payments
#=> 2015-04-30
从文档 Date#>>
d >> n
→date
返回指向
n
几个月后的日期对象self
。的n
值为数字。
这不仅可以返回正确的日期,还可以优化查询next_payment_date
和统计信息,例如平均订阅时间(以月为单位)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句