Rails 设计 - 如何在初始值设定项中对用户进行身份验证

Rails Devise - How to authenticate user inside initializers

一个 rails 应用程序使用外部 coupon gem 并设计阻止非管理员用户使用优惠券页面。在我的 initializer/coupons.rb 中尝试做这样的事情:

  config.authorizer = proc do |controller|
      if !current_user.admin?

        redirect_to(request.referrer || "/")
      end
  end

得到这个: main:Object

的未定义局部变量或方法“current_user”

查看 application controller's gem 显示在操作过滤器之前调用授权方初始化程序。

有什么想法吗?

我相信参考用户 models/initializers 打破了 MVC 架构原则。关于 current_user 的逻辑应该在控制器和视图中。请考虑重构您的逻辑。谢谢!