Rails,设计。禁止用户操作,除非AdminUser

时间:2016-11-10 08:54:38

标签: ruby-on-rails devise

我有使用Devise创建的用户模型,类型:字符串属性和 AdminUser 模型(AdminUser < User)。< / p>

在应用程序控制器中,我定义了:require_admin 方法:

  def require_admin
    unless current_user == AdminUser
      flash[:error] = "You are not an admin"
      redirect_to store_index_path
    end
  end

在产品控制器上设置

before_action :require_admin, except: :show

现在我通过控制台成功创建了一个AdminUser(使用AdminUser id),当我登录应用程序时,我仍然无法使用这些操作(创建,编辑等)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

current_user == AdminUser

检查current_user对象是否与AdminUser类相等

您想要的是检查current_user的班级是AdminUser

current_user.class == AdminUser
# or
current_user.is_a?(AdminUser)
# or
current_user.kind_of?(AdminUser)
# or
current_user.instance_of?(AdminUser)
# or
AdminUser === current_user

答案 1 :(得分:0)

我认为它应该是current_user.is_a?(AdminUser)

来源:is_a? method documentation