Logo

ROR添加用户权限控制

ROR中用户权限控制一般使用cancan

打开Gemfile文件,加入

gem 'cancan'

然后在命令行中输入

bundle install

继续在命令行中输入,来创建模型

rails g cancan:ability

为了和devise整合起来

我们需要在app/models/user.rb中加入

ROLES = %w[admin moderator author banned]

然后在命令行中输入下面的代码来给user表添加一个名为role的字段

rails generate migration addroleto_users role:string

更新数据库

rake db:migrate

打开app/models/ability.rb将代码改为

使除admin以外其他用户只拥有浏览和新建的权限

同时更新控制器,加入

loadandauthorize_resource

此时普通用户已经无法进行编辑、删除的操作了,但是会抛出异常

我们来处理这个,使程序对用户友好一些,在控制器中加入

rescuefrom CanCan::AccessDenied do |exception|
  flash[:error] = "访问被拒绝。"
  redirectto root_url
end

在最后,我们直接让普通用户无法看到编辑和删除的链接

打开相应的视图文件,在需要控制的地方加上

if can?

例如:

comments powered by Disqus