【问题标题】:cancan authorization in unmatched model and controller name不匹配的模型和控制器名称中的 cancan 授权
【发布时间】:2013-03-29 03:56:10
【问题描述】:

我正在使用 cancan,但我遇到了小问题..

my ability.rb
can :manage, Department
can :manage, Review

我有 2 个案例,它适用于案例 1,但不幸的是不适用于案例 2

case 1

我的部门主管

 load_and_authorize_resource :message => "Unable to read this article."
  Here it works because in this controller 
  I use model Department

现在是我的评论控制器

 case 2



  class ReviewsController < ApplicationController


  load_and_authorize_resource :message => "Unable to read this article."
  layout 'system'
  respond_to :html, :json
  add_breadcrumb "Home", :root_url
  add_breadcrumb "Reviews", :reviews_path
  def index
   @page_title = "Reviews List"
    @reviews = Evaluate.all
  end
    def show
       @page_title = "Review setting of selected Job title"
       @review = Evaluate.find(params[:id])
    end

我该如何解决这个问题?

  Is there a fix rule in cancan that model name 
    should be related to the controller name?
    Departments(controller) should have Department(model)?
    How can we implement cancan in Reviews(controller) which have Evaluate(model)? 

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 cancan


    【解决方案1】:

    控制器中的load_and_authorize_resource 方法用于将资源加载到实例变量中,并为该控制器中的每个操作自动授权。模型和控制器可以单独授权。在您的ability.rb 中,只需使用can :manage, Evaluate 来授权该模型。

    如果你有一个用户模型并有一个管理员布尔字段,那么你可以执行如下授权:

    if user.admin?  
      can :manage, Evaluate   
    else
      can :read, Evaluate   
    end  
    

    或者,您可以使用授权来授权控制器操作!方法。
    回答您的问题:我们如何在具有 Evaluate(模型)的评论(控制器)中实现 cancan?

    def index
      @reviews = Evaluate.all
      authorize! :read, @reviews
    end
    

    【讨论】:

    • 控制器审查和模型评估代码能力的任何工作示例都可能会有所帮助..
    • 请正确格式化您的代码。为此,您可以使用 textarea 顶部的花括号。
    • 我刚刚编辑了我的评论控制器,你可以再看一遍。这个方法阻止显示编辑链接,但你可以通过浏览器访问。我们需要添加 load_and_authorize_resource :message => "无法阅读这篇文章。"在没有提供访问权限的控制器中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多