RUBY ON RILS上的RILS-Devise-ROES示例应用。

问题描述 投票:1回答:1

我发现 本例Ruby on rails应用 展示 devise gem 和它的角色使用。

在readme中他们提到

一个普通用户不能改变他们的角色

普通用户可以看到(和编辑)自己的用户资料。

然而,从 用户控制器

class UsersController < ApplicationController
  before_action :authenticate_user!
  before_action :admin_only, :except => :show

  def show
    @user = User.find(params[:id])
    unless current_user.admin?
      unless @user == current_user
        redirect_to root_path, :alert => "Access denied."
      end
    end
  end

  def update
    @user = User.find(params[:id])
    if @user.update_attributes(secure_params)
      redirect_to users_path, :notice => "User updated."
    else
      redirect_to users_path, :alert => "Unable to update user."
    end
  end


  def admin_only
    unless current_user.admin?
      redirect_to root_path, :alert => "Access denied."
    end
  end

  def secure_params
    params.require(:user).permit(:role)
  end

end

我们可以看到,所有的操作都只允许管理员用户进行,除了 show,其中当前登录的用户正在被测试是否为 @user 我们正在尝试fetchshow。这对于readme中的 "普通用户可以看到自己的用户资料 "这部分是有意义的。

我不明白的是,readme说用户也可以编辑他们自己的个人资料,但在 update 动作只允许管理员用户执行(那么,管理员是否只能改变用户的角色?)。permit(:role)).

ruby-on-rails ruby devise roles
1个回答
0
投票

我建议关注关于这类事情的最新指南。https:/altalogy.comlograils-6-user-accounts-with-3-types-of-roles.

你链接的repo最后一次更新是在4年前。我试图把这个repo拉下来,在本地测试你提出的这些观点,但我遇到了太多的问题,试图这样做。在其他地方寻找这方面的指导。

编辑:不过我确实看了一下代码,我并不完全确定这个应用是如何做到README上说的那样的。

© www.soinside.com 2019 - 2024. All rights reserved.