Rails:一旦达到限制,如何处理自动升级用户帐户?

时间:2013-02-02 21:47:00

标签: ruby-on-rails ruby ruby-on-rails-3 stripe-payments

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

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

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

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

如何将Rails应用设置为“观察”用户帐户以进行这些更改?

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

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

2 个答案:

答案 0 :(得分:2)

在用户计划上设置association callbacks。假设您与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

答案 1 :(得分:0)

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

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

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