设计rails current_user与user_signed_in?

use*_*066 6 ruby-on-rails devise

我正在使用Devise on Rails 4.1我的问题是关于助手以及它们与会话的关系。current_user:告诉您是否有用户可用的用户会话。user_signed_in:告诉您用户是否已通过身份验证。

我不能理解如果user_signed_in可以有一个current_user?是假的吗?

两种方法之间的区别是什么,它与会话有什么关系。

谢谢。理查德·麦森(Richard Madson)

Saq*_*qib 6

current_user方法返回当前登录的用户,而user_signed_in? 方法用于验证是否有任何用户登录并返回 true 或 false。如果user_signed_in?为 false 则current_user方法将返回 nil。

https://github.com/plataformatec/devise#controller-filters-and-helpers


dro*_*att 5

user_signed_in?为方便起见。你的主张user_signed_in?是对的,如果是的话false,那就永远不会有current_user

设计源代码中,我们可以看到:

def #{mapping}_signed_in?
  !!current_#{mapping}
end
Run Code Online (Sandbox Code Playgroud)

user代替#{mapping}

user_signed_in?只是返回的感实性current_user,即,false如果current_usernil