我是第二年本科设计铁路项目的红宝石 婚礼。
我在很多代码上苦苦挣扎但是我有一个主要的事情 不明白该怎么做是为了确保管理员不删除他们的 在目前的情况下,在此过程中拥有自己的帐户。
有人可以帮帮我吗?我知道这是用户内部的代码 controller.rb有“def destroy”但我不知道怎么回事 这样做。
这是我到目前为止的代码:
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
端
谢谢
答案 0 :(得分: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)
问题出在这一行
if not user.role = 'admin'
应为==
unless user.role == 'admin'
答案 2 :(得分:1)
一些事情
首先,当用户不是管理员时,您需要进行重定向。 如果user.role!='admin'
,我也会使用语法if user.role != 'admin'
@user.destroy
redirect_to users_path
else
迈克尔