我正在使用Michael Hartl的Rails教程,并且在我创建管理员用户时出现了一个问题。
我按照说明操作,创建了一个admin_user,可以访问:destroy方法。它也不是attr_accessible,因此人们不能简单地通过浏览器发出put请求并将其自身更改为admin。
但是,我有一个由两部分组成的问题 -
1)我如何建立用户管理员?
我虽然需要在控制台中写这样的东西
rails console
user = User.find(params[:101])
user.toggle!(:admin)
当我尝试时,我得到了
主要的未定义局部变量或方法'参数':对象
2)假设有可能让自己成为管理员,那么是什么阻止其他人使用命令行进行管理?
这是users_controller的副本,我认为迈克尔在教程中解决了这个问题,并且我遵循了他的指示,但是我不知道下面的代码如何阻止某人进入命令行并使自己成为管理员
class UsersController < ApplicationController
before_filter :signed_in_user,
only: [:edit, :update, :index, :destroy]
before_filter :correct_user, only: [:edit, :update]
before_filter :admin_user, only: :destroy
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_url
end
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find(params[:id])
end
def new
unless signed_in?
@user = User.new
else
redirect_to @current_user
end
end
def create
unless signed_in?
@user = User.new(params[:user])
if @user.save
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
else
redirect_to @current_user
end
end
def edit
end
def update
if @user.update_attributes(params[:user])
flash[:success] = "Profile updated"
sign_in @user
redirect_to @user
else
render 'edit'
end
end
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_path) unless current_user?(@user)
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end
我真的很感谢你的帮助清理了一切!
答案 0 :(得分:0)