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

时间:2013-09-15 01:36:52

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1 syntax-error

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

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

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

  

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

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

由于

1 个答案:

答案 0 :(得分:3)

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

if @user.public || current_user&.admin

更新回答

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

这使代码更加出色:

{{1}}