Ruby检查记录是否存在以及一行是否存在关联

Mik*_*ord 2 ruby if-statement ruby-on-rails

我总会碰到的东西。我想做这个:

if current_user.exists? && current_user.role == "admin"
  # Do something
end
Run Code Online (Sandbox Code Playgroud)

显然,如果当前用户不存在,则返回时将不起作用 undefined method role for nil class

有没有一种方法我可以在没有多条If语句的情况下实现上述目的?

Mar*_*ark 5

尝试:

if current_user&.role == "admin"
Run Code Online (Sandbox Code Playgroud)

& 是一个安全的导航器-如果它之前的部分为nil,则方法链的其余部分将不会执行,仅返回nil而不是抛出错误。

更多阅读:http : //mitrev.net/ruby/2015/11/13/the-operator-in-ruby/