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

我建议您只保留一种方法来确定用户是否登录,而不是使用logged_in?andnot_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 回答