设计rails current_user vs user_signed_in?

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

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

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

谢谢。 理查德麦德森

current_user方法返回当前登录用户,而user_signed_in? method用于validation是否有用户登录并返回true或false。 if user_signed_in? 如果为false,则current_user方法将返回nil。

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

user_signed_in? 是为了方便。 你的断言是正确的,如果user_signed_in?false ,永远不会有current_user

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

 def #{mapping}_signed_in? !!current_#{mapping} end 

user取代#{mapping}

user_signed_in? 只返回current_user ,即如果current_usernil ,则返回false