web-dev-qa-db-ja.com

Ruby)でガード句を正しく使用する方法

このサンプルでguard句を使用する正しい方法は何ですか?

def require_admin
  unless current_user && current_user.role == 'admin'
    flash[:error] = "You are not an admin"
    redirect_to root_path
  end        
end

これらを使用して書き直そうとしたときにフラッシュメッセージを配置する場所がわかりません https://github.com/bbatsov/Ruby-style-guide#no-nested-conditionals 規則

12
Sasha

ここでreturnステートメントを使用できます。基本的に、メソッドがifを続行する必要はありません。これらの条件が満たされているため、早期に救済できます。

def require_admin
  return if current_user && current_user.role == 'admin'

  flash[:error] = "You are not an admin"
  redirect_to root_path
end
22
Justin