cancan的load_and_authorize_resource中的自定义实例变量名称?

时间:2014-12-02 09:00:39

标签: ruby-on-rails-4 ruby-2.1

users_controller.rb

class UsersController < ApplicationController  
  def index
    @objects = User.filter(params: params)
  end
end  

Q.1&gt;如果&#39; load_and_authorize_resource&#39;然后调用它将加载什么实例变量? Q.2&gt;如果它加载@user或@users然后如何加载@object?

我认为我缺乏足够的知识了解cancan(我是一个铁杆新手),并且在过去的4天里使用它,希望这个问题有道理。

2 个答案:

答案 0 :(得分:1)

Q1。对于UsersController,它将是@user

Q2。如果您有正确的路线,可以使用

load_and_authorize_resource :custom_model_name

此外,它对您有用[{3}}

答案 1 :(得分:1)

如果已设置实例变量,则不会加载资源。这样可以通过on_filter轻松覆盖某些操作的行为 - 来自cancan https://github.com/ryanb/cancan/blob/master/lib/cancan/controller_additions.rb第34和35行,这样您就可以在控制器中执行此操作 -

before_filter :set_instance_variable  
load_and_authorize_resource  
private  
  def set_instance_variable
    @object = "blah blah blah"  
  end  
设置实例变量后应调用

load_and_authorize_resource,即在'before_filter:set_instance_variable'之后