【问题标题】:Understanding Roles in Rails 3.2 with Rolify使用 Rolify 了解 Rails 3.2 中的角色
【发布时间】:2012-06-06 05:51:17
【问题描述】:

有没有简单的角色教程?我发现Devise 是一个很棒且简单的授权解决方案。然后当谈到Cancan with Rolify 时,像我这样的初学者会感到困惑。

目前我正在ability.rb中定义角色:

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

然后,在控制器中,我正在检查,如下例所示:

def destroy
 ability = Ability.new(current_user)
 if ability.can? :delete, :all then
   @post = Post.find(params[:id])
   @post.destroy
 end

 respond_to do |format|
   ...
end

我的问题是——我对检查ifability.can有一种奇怪的感觉? :delete, :all then 在本例中是多余的。那么我的代码没问题还是我真的弄错了?谢谢

【问题讨论】:

    标签: ruby-on-rails authentication devise roles cancan


    【解决方案1】:

    检查他们是否可以删除相关帖子会更有意义。管理员可以删除任何内容,但普通用户只能删除他们拥有的内容。

    @post = Post.find(params[:id])
    authorize! :delete, @post
    

    我还建议您花一些时间阅读 cancan 的文档,因为您的代码并不真正匹配。

    【讨论】:

    • @DVG 但是 valk 如何将 Rolify 与 CanCan 集成?
    【解决方案2】:

    我认为你的“破坏”方法可以是:

    def destroy
     @post = Post.find(params[:id])
     if can? :delete, @post then 
       @post.destroy
     end
    
     respond_to do |format|
       ...
    end
    

    因为在cancan的文档中:

    然后可以使用 can? 检查当前用户的权限?和 不能?视图和控制器中的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多