2014-03-05 125 views
2

我是第二年本科生设计红宝石轨道计划 婚礼。确保管理员帐户是不可删除的

我挣扎着很多代码,但我不知道该如何做的一件主要事情是确保管理员不会在过程中删除自己的帐户 ,就像当前的案件。

请有人可以帮助我吗?我知道这是一个代码在用户 controller.rb其中“def摧毁”,但我不知道如何去做 这样做。

这是我的代码至今:

def destroy 
@user = User.find(params[:id]) 
if not user.role = 'admin' 
@user.destroy 
else 
respond_to do |format| 
    format.html { redirect_to users_path, 
notice: "#{@user.name} is an admin. You do not have permission to delete this user" } 
    format.json { head :no_content } 
end 

谢谢

回答

1

的问题是在这条线

if not user.role = 'admin' 

应该是==

unless user.role == 'admin' 
1

一些东西

首先你需要有一个重定向,当用户不是管理员。 我也将使用语法如果user.role!=“管理员”

if user.role != 'admin' 
    @user.destroy 
    redirect_to users_path 
else 

迈克尔

+0

一个经常看到的方法但是它违反了瘦控制器脂肪模型原理.. – dennis

2

我强烈建议提取所有的逻辑放到一个实例方法。这样,在将来需要使用和实施新规则时会容易得多。

在你user.rb文件:

def safe_destroy 
    return false if admin? 
    destroy 
end 

def admin? 
    role == 'admin' 
end 

在你的控制器:

def destroy 
    @user = User.find(params[:id]) 
    if @user.safe_destroy 
    # do something 
    else 
    # do something else 
    end 
end 
+1

+1在使用实例方法逻辑控制器,很干净! – dennis

相关问题