Ruby on Rails:未定义的方法,检查boolean if true语句

问题描述 投票:1回答:1

我有一个页面,我正在检查数据库列public是否为真或用户是否为admin。

<% if @user.public || current_user.admin %>
  ... users page ...
<% end %>

现在的问题是,如果我没有登录,那么它检查current_user.admin是否为真,所以我得到一个NoMethodError

nil的未定义方法`admin':NilClass

什么是最合乎逻辑的语法,所以我可以检查它的公共或管理员,如果我没有登录,所以它应该指向一个被注意的页面,而不是得到这个错误。

谢谢

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1 syntax-error
1个回答
3
投票

在检查current user是否为admin之前,您需要检查if @user.public || (current_user && current_user.admin) 是否已设置:

Ruby 2.3.0 introduced the Safe Navigation operator (&.).

Updated answer

if @user.public || current_user&.admin

这使代码更好:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.