我正在使用Devise on Rails 4.1 我的问题是帮助者以及他们与会话的关系。 current_user:告诉您是否有可供该用户使用的用户会话。 user_signed_in:告诉您用户是否经过身份验证。
我无法理解如果user_signed_in可以有一个current_user?是假的?
这两种方法有什么区别,以及它与会话的关系。
感谢。 理查德·马德森
答案 0 :(得分:5)
user_signed_in?
是为了方便起见而提供的。您的断言是正确的,如果user_signed_in?
为false
,则永远不会有current_user
。
在devise source code中,我们可以看到:
def #{mapping}_signed_in?
!!current_#{mapping}
end
(其中user
取代#{mapping}
)
user_signed_in?
只会返回current_user
的真实性,即false
如果current_user
为nil
。
答案 1 :(得分:4)
current_user 方法返回当前登录用户,而 user_signed_in?方法用于验证是否有用户登录并返回true或false。如果 user_signed_in?为false,那么 current_user 方法将返回nil。
https://github.com/plataformatec/devise#controller-filters-and-helpers