gpt4 book ai didi

ruby-on-rails - 您将如何计算到期时间以更新 rails 中的列

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:18 25 4
gpt4 key购买 nike

我正在尝试找出计算用户订阅剩余天数的正确方法。

例如;用户在 2013 年 12 月 25 日注册了一个月,并在 2013 年 12 月 29 日取消了订阅。即使他在订阅后 4 天取消订阅,他的订阅也应该在接下来的 27 天(每月 31 天)按计划 A 运行。

我想我会使用订阅模型的 created_at 和 updated_at。到目前为止,我必须

**型号:subscription.rb

class Subscription < ActiveRecord::Base

before_save :set_expiry_date

def set_expiry_date
@remaining_days = Subscription.calculate(:created_at - Date.today)
Subscription.expiry = '@remaining_days'
Subscription.save
end

end

类似的东西,但我在这里遗漏了一些东西,这可能是一种丑陋的方法。我猜这会让任何可以帮助 small 理解我所追求的人。

然后我会在每天 23:59 以 cron 的身份运行 rake,从那里的 Subscription.expiry 数字中删除 1(天),当它找到 0 时,它会更新一些东西。不过那是另一个问题,但我放置了关于 rake cron 的东西,这样你就知道我要解决这个问题了。

最佳答案

如果这是我的项目,我会采取不同的方法。我会将订阅到期设置为实际到期日期而不是递减整数。这减少了 cron 的工作,而且感觉像是很好的约会练习。 . .您可以获得在到期后保留到期日期的好处,这对于以后的数据分析可能很方便。如果您的程序中存在错误或您的 cron 无法运行怎么办?通过保留日期,您可以做一些详细的作业或针对特定队列重新运行您的 cron。

如果我需要知道 UI 或 API 响应的订阅剩余天数,我可以在订阅类上调用一个类似于下面的 remaining_days 方法的方法:

def set_expiry_date
#automatically adds a month
#http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-i-next_month
Subscription.expiry_date = Subscription.created_at.next_month
Subscription.save
end

def remaining_days
expired? ? 0 : (Date.today - Subscription.expiry_date).to_i
end

def expired?
(Date.today - Subscription.expiry_date).to_i <= 0
end

def expired_today?
Date.today == Subscription.expiry_date
end

然后,我的日常 cron 在到期时做一些事情(发送电子邮件恳求客户回来?)只会在 expired_today 的地方寻找订阅? == 是的。然后,我的 cron 也会忽略今天之前过期或尚未过期的订阅。

关于ruby-on-rails - 您将如何计算到期时间以更新 rails 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com