我目前是用户: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评估相反的结果。
Currenty:is_logged?如果记录则返回true,否则返回false。 如果没有记录,我希望它返回true,反之亦然。
谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
我确信有一种方法可以简化这一点,但出于学习目的,我认为这样做。
def not_logged_in?
if defined? current_user
current_user.nil?
else
true
end
end