【问题标题】:How to correctly use guard clause in Ruby如何在 Ruby 中正确使用保护子句
【发布时间】:2020-12-28 21:42:14
【问题描述】:

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

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 消息

【问题讨论】:

    标签: ruby-on-rails ruby guard clause


    【解决方案1】:

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

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

    【讨论】:

    • 这是旧的,但我仍然认为我会在返回子句中添加一个小建议。由于我们在 ruby​​ 中有安全导航运算符,我们可以将保护子句重构为return if current_user&.role == 'admin',这样更加简洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多