2

publicデータベース列が true かどうか、またはユーザーが管理者かどうかを確認するページがあります。

<% 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 では Safe Navigation 演算子 ( &.) が導入されました。

これにより、コードがさらに良くなります。

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