我正在学习“Ruby Way”并玩得很开心,但是,我有这个按预期工作的块,尽管我知道它可能会更好。有人可以告诉我正确的使用方法unless
吗?这是在用户控制器中。
def destroy
User.find(params[:id]).destroy unless current_user.admin?
flash[:success] = "User destroyed."
redirect_to users_path
end
我正在学习“Ruby Way”并玩得很开心,但是,我有这个按预期工作的块,尽管我知道它可能会更好。有人可以告诉我正确的使用方法unless
吗?这是在用户控制器中。
def destroy
User.find(params[:id]).destroy unless current_user.admin?
flash[:success] = "User destroyed."
redirect_to users_path
end
无论用户是否被销毁,您都将设置 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
你写代码的方式其实是最简洁的;尽管您可能想让整个事物成为一个块。这样,当您调用销毁时,“用户已销毁”。当帐户未被实际删除时,不会打印并且不会调用 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
在所有有用的建议之后,这就像我想的一样紧凑
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
unless current_user.admin?
end
end