3

我有一个存储文件的 Rails 应用程序,用户可以在其中订阅三个计划:

  • 计划 1:免费试用最多50 个文件,为期30 天
  • 计划 2:最多250 个文件
  • 计划 3:最多500 个文件

在以下情况下,我将如何自动升级/降级用户计划:

  • 30 天试用期结束或用户上传超过 50 个文件
  • 超出文件限制并进入另一个括号
  • 或者文件被删除并且用户下降了一个级别

如何将 Rails 应用程序设置为“监视”用户帐户以进行这些更改?

有没有比在 Files 控制器创建和删除操作中粘贴逻辑更好的方法?那么 30 天的试用逻辑呢?谢谢!

注意:我可以很好地处理订阅的实际切换,只需寻找监控和触发切换的逻辑。

4

2 回答 2

2

在用户的计划上设置关联回调。假设您与 Plan 有 has_many 关系,在 User.rb 中您可能有类似

has_many :plans, :through => :user_plans,
  :after_add => :check_plan_eligibility,
  :after_remove => :check_plan_eligibility

进而

protected
def check_plan_eligibility(obj)
  # Do checks here based on your rules, and update the user's plan ID accordingly
end
于 2013-02-02T22:07:31.027 回答
0

观察者(http://api.rubyonrails.org/classes/ActiveRecord/Observer.html

或者

ActiveRecord::Callbacks ( http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html )

用户登录后可查看 30 天试用。其余的可以在用户更新时使用回调来完成。

于 2013-02-02T21:52:56.097 回答