2

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

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

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

nil:NilClass 的未定义方法“admin”

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

谢谢

4

1 回答 1

4

在检查它是否是之前,您需要检查是否current user设置admin

if @user.public || (current_user && current_user.admin)

更新的答案

Ruby 2.3.0 引入了安全导航运算符 ( &.)。

这使得代码更好:

if @user.public || current_user&.admin
于 2013-09-15T01:43:28.483 回答