0

我正在学习“Ruby Way”并玩得很开心,但是,我有这个按预期工作的块,尽管我知道它可能会更好。有人可以告诉我正确的使用方法unless吗?这是在用户控制器中。

def destroy
  User.find(params[:id]).destroy unless current_user.admin? 
  flash[:success] = "User destroyed."
  redirect_to users_path      
end
4

3 回答 3

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
于 2012-07-25T02:13:09.593 回答
1

你写代码的方式其实是最简洁的;尽管您可能想让整个事物成为一个块。这样,当您调用销毁时,“用户已销毁”。当帐户未被实际删除时,不会打印并且不会调用 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
于 2012-07-25T02:10:59.490 回答
0

在所有有用的建议之后,这就像我想的一样紧凑

def destroy
      User.find(params[:id]).destroy 
      flash[:success] = "User destroyed."
      redirect_to users_path

      unless current_user.admin? 

  end
end
于 2012-07-25T02:59:37.367 回答