首页 > 解决方案 > CanCan 授权有时会失败,但当我刷新时它可以工作

问题描述

我赋予管理员用户与普通用户不同的能力当使用管理员用户登录时,有时我在某些操作上得到未授权异常,即使它应该被授权,但是当我刷新页面时,我再次被授权。

有谁知道如何解决这个问题或导致它的原因?

我的控制器和操作:

before_action :authorize_vendor

def delivery
  @order = Order.find_by(number: params[:id])
  authorize! vendor_action, @order
end

def vendor_action
  "vendor_#{action}".to_sym
end

def authorize_vendor
  record = if respond_to?(:model_class, true) && model_class
              model_class
            else
              controller_name.to_sym
            end        
  authorize! :vendor, record
  authorize! vendor_action, record
end

下面是能力类代码

@vendor_ids = vendors.pluck(:id).first
can :vendor, Order, vendor_id: @vendor_ids
can :vendor_delivery, Order, vendor_id: @vendor_ids

我正在使用导轨 5.1.6

标签: ruby-on-railsrubyruby-on-rails-5cancancancancan

解决方案


推荐阅读