Ruby on rails 设计订阅过期的最佳方法?

Ruby on rails 设计订阅过期的最佳方法?,ruby-on-rails,django,database-design,Ruby On Rails,Django,Database Design,我正在重新设计我们的订阅模式,想知道什么是最好的设计模式: 模式1: 用户有一个计费日期 在计费日期的顶部,用户被指定一个特定的到期日期。到期日期=注册日期+订阅长度 如果当前时间()小于到期日期,授权系统将授权访问 模式2: 用户有一个计费日期 如果用户订阅状态=活动,授权系统将授权访问 使用Cronjob,如果当前时间>计费日期我个人认为模型1是一种更好的方法,则用户的订阅状态将从活动状态更改为过期状态。 即使用户在这段时间内延长了订阅,您也可以安全地应用回调并设置适当的到期日 这将不会对模

我正在重新设计我们的订阅模式,想知道什么是最好的设计模式:

模式1:

用户有一个计费日期

在计费日期的顶部,用户被指定一个特定的到期日期。到期日期=注册日期+订阅长度

如果当前时间()小于到期日期,授权系统将授权访问

模式2:

用户有一个计费日期

如果用户订阅状态=活动,授权系统将授权访问

使用Cronjob,如果当前时间>计费日期

我个人认为模型1是一种更好的方法,则用户的订阅状态将从活动状态更改为过期状态。
即使用户在这段时间内延长了订阅,您也可以安全地应用回调并设置适当的
到期日

这将不会对模型2中cron预期的后台作业产生任何瓶颈

我很想了解更有经验的开发人员对这个问题的看法。:)

我个人认为模型1是一种更好的方法。
即使用户在这段时间内延长了订阅,您也可以安全地应用回调并设置适当的
到期日

这将不会对模型2中cron预期的后台作业产生任何瓶颈


我很想了解更有经验的开发人员对这个问题的看法。:)

模型1很好,因为您只在需要时进行评估,即当有人试图访问某个内容时,它非常有效,并且节省了cron作业。Cron作业管理起来可能会很麻烦,并且会在扩展方面产生问题


模型2的优点是,您可以了解会话何时过期(或不久之后),即在过期前后有一个保证事件。这可能是一件好事,例如,如果您想发送一封电子邮件,说明订阅已过期,或者您想知道有多少订阅仍处于活动状态。当然,还有其他模型也可以获得这些功能。

模型1很好,因为您只在需要时进行评估,即当有人试图访问某个对象时,它非常有效,并且节省了cron作业。Cron作业管理起来可能会很麻烦,并且会在扩展方面产生问题


模型2的优点是,您可以了解会话何时过期(或不久之后),即在过期前后有一个保证事件。这可能是一件好事,例如,如果您想发送一封电子邮件,说明订阅已过期,或者您想知道有多少订阅仍处于活动状态。当然还有其他型号也可以获得这些功能。

型号1经过一次修改后更好:
到期日期=订阅日期+订阅长度
-而不是
注册日期
,因为注册日期总是用户第一次注册(通常)。但他们会反复(满怀希望地)重新订阅。用户重新订阅到期后可能会有一段时间间隔,因此如果您只在注册日期中添加订阅长度,那么他们将失去新订阅的时间


正如@Will所指出的,模型2是一个很好的方法来发现哪些用户的订阅即将到期。

模型1更好,只需一个修改:
到期日期=订阅日期+订阅长度
-而不是
注册日期
,因为注册日期总是用户第一次注册(通常)。但他们会反复(满怀希望地)重新订阅。用户重新订阅到期后可能会有一段时间间隔,因此如果您只在注册日期中添加订阅长度,那么他们将失去新订阅的时间

正如@Will所指出的,模型2是一个很好的方法,可以确定哪些用户的订阅即将到期。

选择1#2可能更容易失败,并且您正在存储冗余数据(状态可以从计费日期确定)。请使用#1#2可能更容易失败,并且您正在存储冗余数据(状态可以从计费日期确定)。