Ruby中如何正确使用guard子句

How to correctly use guard clause in Ruby

本例中保护子句的正确使用方法是什么?

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 约定重写时,我不知道将 flash 消息放在哪里

您可以在此处使用return 语句。本质上,如果满足这些条件,则该方法无需继续,因此您可以提前退出。

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

  flash[:error] = 'You are not an admin'
  redirect_to root_path
end