0

私は「Ruby Way」を学んで楽しんでいますが、意図したとおりに機能するこのブロックを持っていますが、もっと良くなる可能性があることはわかっています。誰かが私に正しい使用方法を教えてもらえますunlessか? これは UsersController にあります。

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

3 に答える 3

3

ユーザーが破壊されたかどうかに関係なく、フラッシュメッセージを設定します。

あなたの場合、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

あなたがコードを書いた方法は、実際には最も簡潔です。おそらく全体をブロックにしたいでしょうが。このように、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
于 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 に答える