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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby on Rails:未定义的方法,检查boolean if true语句相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

谢谢

答案

在检查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

以上是关于Ruby on Rails:未定义的方法,检查boolean if true语句的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails:高级搜索,nil:Nilclass 的未定义方法 []

Base64 编码的字符串到文件(Ruby on Rails) - 未定义的方法“解包”错误

Ruby on Rails Simple_form_for的未定义方法

Ruby on Rails - 未定义的方法`split'代表nil:StocksController中的NilClass / NoMethodError #search

nameerror 未定义的局部变量或方法 `log_out' 你的意思是? logout_url ruby​​ on rails

Ruby on Rails - 未捕获的ReferenceError:$未定义