设计rails current_user vs user_signed_in?

时间:2015-12-02 11:54:53

标签: ruby-on-rails devise

我正在使用Devise on Rails 4.1 我的问题是帮助者以及他们与会话的关系。 current_user:告诉您是否有可供该用户使用的用户会话。 user_signed_in:告诉您用户是否经过身份验证。

我无法理解如果user_signed_in可以有一个current_user?是假的?

这两种方法有什么区别,以及它与会话的关系。

感谢。 理查德·马德森

2 个答案:

答案 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_usernil

答案 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

相关问题