2013-08-02 58 views
-1

我必須重寫create方法的註冊控制器,所以現在當用戶註冊時,它不會在帳戶創建後自動簽入它們,但我想保持這種行爲。如何在創建帳戶後自動對用戶進行簽名?

目前我的創建方法是這樣的:

def create 
    @user = User.new 
    @user.attributes = params[:user] 

    if cookies[:invcode] 
     @user.inv_code = cookies[:invcode] 
     cookies.delete :invcode 
    end 

    if @user.save 
     redirect_to :root 
    end 
    end 
+3

什麼是您的代碼登錄?你只需要把它放在'if @ user.save'代碼塊中;) – MrYoshiji

回答

3

如果你使用的方法類似sign_in @user或類似設計的sign_in_and_redirect,你可以使用在你創建方法@ user.save塊。

0

你在使用Devise嗎?如果是這樣,

if @user.save 
    sign_in_and_redirect @user, event: :authentication 
end 

,或者甚至更好,只是複製一些從圖謀registration controller的代碼。

# POST /resource 
    def create 
    build_resource(sign_up_params) 

    if resource.save 
     if resource.active_for_authentication? 
     set_flash_message :notice, :signed_up if is_navigational_format? 
     sign_up(resource_name, resource) 
     respond_with resource, :location => after_sign_up_path_for(resource) 
     else 
     set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format? 
     expire_session_data_after_sign_in! 
     respond_with resource, :location => after_inactive_sign_up_path_for(resource) 
     end 
    else 
     clean_up_passwords resource 
     respond_with resource 
    end 
    end 
相關問題