我正在学习“Ruby Way”并获得乐趣,但是,我有这个块按预期工作,但我知道它可能会更好。有人可以告诉我使用unless
的正确方法吗?这是在UsersController中。
def destroy
User.find(params[:id]).destroy unless current_user.admin?
flash[:success] = "User destroyed."
redirect_to users_path
end
答案 0 :(得分:3)
无论用户是否被销毁,您都将设置Flash消息。
在您的情况下,您应该使用if。
def destroy
if current_user.admin?
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
else
flash[:success] = "You can't destroy user."
end
redirect_to users_path
end
答案 1 :(得分:1)
你编写代码的方式实际上是最简洁的;虽然你可能想把整个事情搞得一团糟。这样当你调用destroy时,“用户被破坏了。”当帐户没有被实际删除时,将不会打印并且不会调用redirect_to users_path。
def destroy
unless current_user.admin?
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
end
end
答案 2 :(得分:0)
在我提出所有有用的建议之后,这就像我想的那样紧凑。
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
unless current_user.admin?
end
end