2011-01-14 18 views
5

Robię prostego użytkownika z aplikacją profilu. Rejestry użytkowników i są automatycznie logowane. Działa do tej pory dobrze. Teraz chciałbym stworzyć profil po udanej rejestracji i przekierować użytkownika do jego/jej profilu.Jak utworzyć profil po rejestracji użytkownika w Rails3 i Devise

Mam model użytkownika i kontroler. Firma Devise utworzyła także kontroler rejestracji . Zainstalowałem klejnot. Skopiowałem pliki dev i i planuję zastąpić akcję tworzenia.

Po pierwsze, niezależnie od tego, co edytuję w registrations_controller.rb, nic się nie zmieniło .

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 

Po drugie, jak wstawić krok tworzenia profilu?

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 

Myślałam aby dodać

current_user.create_profile under is resource.active? 

Jak wy rozwiązać ten problem?

Odpowiedz

4

Po pierwsze, sformatuj swój wpis i użyj bloków < > dla fragmentów. W ten sposób staje się bardzo czytelny.

Podejście do problemu: Wykrywanie domyślnych znaków i przekierowań do aplikacji ścieżka_poczta, po rejestracji. Jeśli chcesz przekierować do innej ścieżki, możesz ją określić na kilka sposobów. Jedną z nich jest określenie ścieżki root dla twojego repozytorium. Więc w twoim przypadku będzie to

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

To przekieruje Cię do profile#new za każdym razem po zalogowaniu. Aby zapobiec przekierowaniu na numer profile#new za każdym razem, gdy można dodać filtr before_filter na profile#new, aby sprawdzić, czy profil istnieje i przekierować do innej strony, na przykład kokpity menedżerskie, jeśli profil istnieje.

Oto link pokazujący jak zmienić redirect_path dla devise: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

+0

Hi Pravin, dzięki. Wypróbuję. Wystarczy wtedy przekazać parametr identyfikatora użytkownika. – Olivier

+0

Myślę, że możesz to zrobić za pomocą current_user – Pravin

+0

Jak powinienem zaktualizować sign_in_and_redirect (resource_name, resource) do 'user_root' – Olivier

Powiązane problemy