让某些类型的用户编辑内容

时间:2013-12-11 06:23:57

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

我设法通过以下方式检查控制器的身份验证用户:

before_filter :authenticate_user!, only: [:new, :edit]

我怎样才能让只有权限'admin'和'editor'的用户编辑和创建内容?

我想要一些像:

before_filter :current_user.rights == 'editor', only: [:new, :edit]

在db的列“权限”

中检查当前登录用户的值

btw我正在使用设计,只有1个用户注册表。有一个用户权限的复选框(因为'type'不允许,我不想改变它)。

Regitration form

2 个答案:

答案 0 :(得分:2)

您可以添加其他before_filter

before_filter :authorize_admin, :only => [...]

def authorize_admin
  unless currenct_user.admin? # Add your logic here
    redirect_to(root_path, :notice => 'You are not authorized') and return
  end
end

如果有多个用户角色和权限,您可以尝试CanCan gem

答案 1 :(得分:1)

在这里使用cancan gem,你可以找到很好的文档https://github.com/ryanb/cancan 在为用户定义能力

之后,只有一行会为您完成
load_and_authorize_resource 

您可以选择仅将方法作为参数传递,但

除外