2011-09-14 86 views
6

我想在用戶登錄後根據用戶表中的某個字段設置會話變量。如果我不需要,我不想創建一個定製Devise控制器。有沒有辦法?或者我將不得不去定製控制器路線?在設計登錄時設置會話變量

回答

12

有回調after_sign_in_path_for,你可以在你ApplicationController

protected 

def after_sign_in_path_for(resource) 
    session[:domain_prefix] = current_user.domain_prefix 
    user_path(resource) 
end 

不要添加它忘記方法的最後一行返回的路徑,否則回調將請求重定向到的session[:domain_prefix]

+0

他要求在登錄時爲ex添加一個新的會話變量:在會話中保留用戶名。 {我的例子是完全沒用的,但我認爲這是他想要的} –

+0

我剛剛編輯了正確的內容,thx –

+0

-1採取了回來:) –

5
內容

這個怎麼樣:

我看第一個資源是http://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in。另外,請查看How to redirect to a specific page on successful sign up using rails devise gem?的一些想法。

你可以這樣做:

def after_sign_in_path_for(resource_or_scope) 
    session[:account_type] = current_user.account_type 

end 

您可以在您的ApplicationController或自定義RegistrationsController此方法。