0

現在、ユーザーは :is_logged? です。ユーザーがログインしているかどうかを確認するためにコントローラーに入力しますが、一部の領域はログに記録されていないユーザーのみに限定したいと考えています。

  private
  def is_logged?
    !!current_user
  end

  private
  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  helper_method :is_logged?
  helper_method :current_user

before_filter を反対に評価させる方法はありますか。

現在:is_logged? ログに記録されている場合は true を返し、それ以外の場合は false を返します。ログに記録されていない場合はtrueを返し、その逆も同様です。

ありがとう!

4

2 に答える 2

1

ユーザーがログインしているかどうかを判断するメソッドを 1 つだけ保持し、メソッドlogged_in?not_logged_in?メソッドを使用してコードを複製しないことをお勧めします。シンプルさと読みやすさのために、おそらく次のようになります。

private

  def logged_in?
    !current_user.nil?
  end
  helper_method :logged_in?

次に、ログインしているユーザーに対して何かをしたい場合:

if logged_in?
  # do something for logged in users
end

また、ログインしていないユーザーに対して具体的に何かを行うには:

unless logged_in?
  # do something for users who are not logged in.
end
于 2013-02-10T02:26:04.823 に答える
0

これを単純化する方法があると確信していますが、学習目的ではこれで十分だと思います。

def not_logged_in?
  if defined? current_user
    current_user.nil?
  else
    true
  end
end
于 2013-02-10T02:07:19.317 に答える