【问题标题】:Rails: How do I handle automatically upgrading a user account once a limit is reached?Rails:一旦达到限制,我如何处理自动升级用户帐户?
【发布时间】:2013-01-17 23:30:24
【问题描述】:

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

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

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

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

如何将 Rails 应用设置为“监视”用户帐户以了解这些更改?

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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
      

      【讨论】:

      • Jnunn,这种关系是一个has_one..你的答案会如何改变?我真的很感激
      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多