如何在Ruby中正确使用guard子句

时间:2015-08-11 13:27:39

标签: ruby-on-rails ruby guard clause

在此示例中使用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约定

重写时,我不知道在哪里放置flash消息

1 个答案:

答案 0 :(得分:20)

您可以在此处使用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