2013-03-05 47 views
1

为什么中间方法是必需的?在我看来,这只是连接第一和第三种方法的中间步骤。登录用户(Ruby on Rails教程第8章)

module SessionsHelper 

    def sign_in(user) 
    cookies.permanent[:remember_token] = user.remember_token 
    self.current_user = user 
    end 

    def current_user=(user) 
    @current_user = user 
    end 

    def current_user 
    @current_user ||= User.find_by_remember_token(cookies[:remember_token]) 
    end 
end 

回答

1

它是setter方法或辅助方法来设置current_user与谁是在线用户。这被devise gem用来识别当前用户。

所以每当你需要找到适合您应用的在线用户,你只需要使用下面的代码 -

if current_user 
#Do something important 
else 
#You do not have enough privileges. Please login. 
#Your offline stuff 
end 
+0

一个问题......当代码运行,请问通过这些方法的应用进展?我认为这可能有助于理解进展。 – bwobst 2013-03-05 13:38:04

+0

没什么特别。如果您正在登录,则使用'sign_in(user)'方法。然后,在用户登录后,将使用'current_user =(user)'方法。但是,如果没有用户被发现,只有在用户使用时才记住我复选框,那么查找来自'remember_token',在这种情况下调用'current_user'方法。 – 2013-03-05 13:56:16

相关问题