2011-01-14 7 views
5

Sto facendo un utente semplice con l'applicazione profilo. I registri utente e vengono automaticamente registrati. Funziona bene finora. Ora, vorrei creare un profilo dopo aver effettuato correttamente la registrazione e reindirizzare l'utente al suo profilo.Come creare un profilo dopo la registrazione dell'utente con Rails3 & Devise

Ho un modello utente e controller. Devise ha anche creato il controller di registrazione . Ho installato la gemma. Ho copiato i file e ho intenzione di sovrascrivere l'azione di creazione.

Innanzitutto, qualunque cosa modifico in registrations_controller.rb nulla modifiche.

class Devise::RegistrationsController < ApplicationController 
prepend_before_filter :require_no_authentication, :only => 
[ :new, :create, :cancel ] 
prepend_before_filter :authenticate_scope!, :only => 
[:edit, :update, :destroy] 
include Devise::Controllers::InternalHelpers 

In secondo luogo, come inserire il passaggio di creazione del profilo?

def create 
    build_resource 

    if resource.save 
    if resource.active? 
     set_flash_message :notice, :signed_up 
     sign_in_and_redirect(resource_name, resource) 
    else 
     set_flash_message :notice, :inactive_signed_up, :reason => 
resource.inactive_message.to_s 
     expire_session_data_after_sign_in! 
     redirect_to after_inactive_sign_up_path_for(resource) 
    end 
    else 
    clean_up_passwords(resource) 
    render_with_scope :new 
    end 
end 

Stavo pensando di aggiungere

current_user.create_profile under is resource.active? 

Come sarebbe voi ragazzi affrontare tale questione?

risposta

4

Innanzitutto, formattare il post e utilizzare i blocchi <codice> per i frammenti. In questo modo diventa molto leggibile.

Venendo al tuo problema: Definire per impostazione predefinita i collegamenti e reindirizzare al percorso root dell'applicazione, dopo la registrazione. Se si desidera reindirizzare ad un altro percorso, è possibile specificarlo in un paio di modi. Uno è specificare root_path per la propria risorsa devise. Quindi nel tuo caso sarà

match '/user/profile/new' => 'profiles#new', :as => 'user_root' 

Questo vi favore usare profile#new ogni volta che si effettua il login. Per impedire il reindirizzamento a profile#new ogni volta che è possibile aggiungere un before_filter su profile#new per verificare se il profilo esiste e reindirizzare su un'altra pagina, ad esempio dashboard, se il profilo esiste.

ecco il link che mostra come cambiare redirect_path per disposizione testamentaria: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

+0

Ciao Pravin, grazie. Ci proverò. Basta passare il parametro id utente quindi. – Olivier

+0

Penso che puoi farlo con current_user – Pravin

+0

Come dovrei aggiornare sign_in_and_redirect (resource_name, resource) a 'user_root' – Olivier