2011-08-26 61 views
2

我正在分配一個整個用戶對象在會話中舉行......這是不好的?軌道如何存儲會話數據?我有一種感覺,這是一個壞主意。我應該只在會話中存儲user_id嗎?rails會話助手(這是不好的)

module SessionsHelper 
    def sign_in(user) 
    session[:user] = user 
    end 

    def current_user 
    session[:user] 
    end 

    def sign_out 
    session[:user] = nil 
    end 
end 

EDIT(我認爲這是更好)

module SessionsHelper 
    def sign_in(employee) 
    session[:employee_id] = employee.id 
    @employee = employee 
    end 

    def current_employee 
    if session[:employee_id] 
     @employee||=Employee.first(session[:employee]) 
    end 
    end 

    def sign_out 
    session[:employee_id] = nil 
    @employee = nil 
    end 
end 

回答

8

默認的會話存儲爲CookieStore,其中有一個4 KB大小限制。所以根據你的用戶對象的大小,這可能是一個壞主意。您可能無法適應cookie中的所有信息,尤其是考慮到其他內容可能存儲在cookie中。

此外,我建議儘量少放置cookie會話中的信息,以降低用戶請求/響應的大小。這些cookie將隨每個新的請求/響應一起發送,至少在你將它們清零之前,所以它會增加每個cookie的總體大小。