设计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_user
为nil
,则返回false
。