Ruby on rails 限制管理员部分和用户的访问';s管理

Ruby on rails 限制管理员部分和用户的访问';s管理,ruby-on-rails,ruby,cancan,Ruby On Rails,Ruby,Cancan,我正在使用CanCan。有一个用户注册页面和一个管理员命名空间,管理员在其中管理用户。网站的管理部分有两种能力:“正常”和“管理能力”: namespace :admin do resources :users end 如何限制访问,以便: 任何人都可以通过注册创建用户 用户可以自行编辑和删除 并且管理员可以删除任何用户 我试着这么做,但没有找到我想要的方法。你的想法 您需要在应用程序/模型中的能力模型中定义权限 例如,在app/model/admin_ability.r

我正在使用
CanCan
。有一个用户注册页面和一个管理员命名空间,管理员在其中管理用户。网站的管理部分有两种能力:“
正常
”和“
管理能力
”:

  namespace :admin do
    resources :users
  end 
如何限制访问,以便:

  • 任何人都可以通过注册创建用户

  • 用户可以自行编辑和删除

  • 并且管理员可以删除任何用户


我试着这么做,但没有找到我想要的方法。你的想法

您需要在应用程序/模型中的能力模型中定义权限

例如,在app/model/admin_ability.rb中:

class AdminAbility
  include CanCan::Ability

  def initialize(admin)
    if admin
      can :manage, :all
    end
  end
end
然后在你的app/models/user_ability.rb中(我猜这就是你说的“正常”的意思):

您可以将允许的操作限制为某个角色;:管理就是一切,但您可以使用:读取、:显示、:编辑、:销毁或包含其中一些元素的数组

您可以在这里找到更深入的信息:

简单的检查-这里有一些非常有用的文章和教程。
class UserAbility
  include CanCan::Ability

  def initialize(user)
    if user
     user ||= User.new # guest user (not logged in)
        can :manage, User, :id => user.id
    end
end