Ruby on rails Ruby检查一行中是否存在记录和关联
我经常遇到的事。我想这样做:Ruby on rails Ruby检查一行中是否存在记录和关联,ruby-on-rails,ruby,if-statement,Ruby On Rails,Ruby,If Statement,我经常遇到的事。我想这样做: if current_user.exists? && current_user.role == "admin" # Do something end 显然,如果当前用户不存在,那么这将不起作用,因为它为nil类返回未定义的方法角色 有没有一种方法可以在一行中实现上述功能,而无需多个If语句?试试: if current_user&.role == "admin" &是一个安全的导航器-如果前面的部分为nil,则方法链的其余部分将不会执
if current_user.exists? && current_user.role == "admin"
# Do something
end
显然,如果当前用户不存在,那么这将不起作用,因为它为nil类返回未定义的方法角色
有没有一种方法可以在一行中实现上述功能,而无需多个If语句?试试:
if current_user&.role == "admin"
&
是一个安全的导航器-如果前面的部分为nil,则方法链的其余部分将不会执行,只返回nil而不是抛出错误
更多阅读:您可以使用传统的
。试试
当前用户。尝试(:角色)==“管理员”
或者使用ruby=2.3.0
current_user&.role==“admin”
既然您想检查“记录是否存在和关联”,您可能想尝试&
而不是|
:-)啊,是的。。我想我问的是这两个问题,但好的捕获我会更新&
的右侧,如果左侧是nil
或false
,则不会计算&
的右侧。因此,只有当第一个条件通过时,即如果用户存在,才会调用当前用户角色。在这种情况下不会发生异常。“方法链的其余部分不会执行”-它仍然会执行nil==“admin”
,这也是false
,但原因不同。