Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 cancan当前的能力方法是否需要每个can方法?_Ruby On Rails 3_Cancan - Fatal编程技术网

Ruby on rails 3 cancan当前的能力方法是否需要每个can方法?

Ruby on rails 3 cancan当前的能力方法是否需要每个can方法?,ruby-on-rails-3,cancan,Ruby On Rails 3,Cancan,我将Rails 3.0.9与cancan 1.6.7和设备1.4.8一起使用 我很怀疑,这个罐子是吗不能/不能?方法调用当前的能力方法,因为 我刚刚在application controller中编写了当前能力方法,它覆盖了cancan的当前能力方法 在应用程序中\u controller.rb def current_ability if current_user.kind_of(User) @current_ability ||= UserAbility.

我将Rails 3.0.9与cancan 1.6.7和设备1.4.8一起使用

我很怀疑,这个罐子是吗不能/不能?方法调用当前的能力方法,因为

我刚刚在application controller中编写了当前能力方法,它覆盖了cancan的当前能力方法

在应用程序中\u controller.rb

    def current_ability
      if current_user.kind_of(User)
        @current_ability ||= UserAbility.new(current_user)
      else
        @current_ability ||= AdminAbility.new(current_admin)
      end
    end
发现,此方法在每个页面请求中被调用44次

登录后加载的索引页包含35个使用can?加载的菜单项?使用can加载3个操作的方法和内容?方法 为什么当前的能力方法被调用了44次?

是。每一罐?不能授权!调用当前的能力方法请参见:

此外,我也不会担心对当前_能力的44次调用。每个请求只创建一个能力对象,因为您在控制器上使用了一个实例变量,带有| |=运算符,即记忆。这不是一个重大的性能打击

例如,让我们做一个快速基准测试,以获取相同的缓存对象100000次

需要基准 def缓存的_对象 @foo | |=字符串。新的'foobar' 终止 缓存的_object.object_id.to_s16=>3ffc5cc53cb0 缓存的_object.object_id.to_s16=>3ffc5cc53cb0返回相同的对象 Benchmark.bm7 do|b| b、 报表缓存对象{100000.times{cached_Object} 终止 用户系统总真实值 缓存对象0.010000 0.0000000.010000 0.017291 对。每一罐?不能授权!调用当前的能力方法请参见:

此外,我也不会担心对当前_能力的44次调用。每个请求只创建一个能力对象,因为您在控制器上使用了一个实例变量,带有| |=运算符,即记忆。这不是一个重大的性能打击

例如,让我们做一个快速基准测试,以获取相同的缓存对象100000次

需要基准 def缓存的_对象 @foo | |=字符串。新的'foobar' 终止 缓存的_object.object_id.to_s16=>3ffc5cc53cb0 缓存的_object.object_id.to_s16=>3ffc5cc53cb0返回相同的对象 Benchmark.bm7 do|b| b、 报表缓存对象{100000.times{cached_Object} 终止 用户系统总真实值 缓存对象0.010000 0.0000000.010000 0.017291
谢谢你的简短解释。谢谢你的简短解释。