2011-05-01 15 views
5

Potrzebuję dodać kilka prostych metod i działań, gdy nowy użytkownik zarejestruje się poprzez program Devise.Jak dostosować kontroler do rejestracji w Devise?

Chcę zastosować metodę powiadamiania, która wyśle ​​mi e-mail.

Chcę użyć acts_as_network, aby przekazać wartość sesji i połączyć nowy rejestr z osobą, która je zaprosiła.

W jaki sposób mogę spersonalizować, spojrzałem na dokumenty, ale nie jestem do końca jasny, co muszę zrobić ... dziękuję!

+0

Pan spojrzał na tym stanowisku? http://stackoverflow.com/questions/3546289/override-devise-registrations-controller – mbreining

+0

@feelway, nie, nie, ale wygląda obiecująco ... Sądzę, że "super" oznacza, że ​​dziedziczy on po kontrolerze Devisera? – Angela

+0

Tak. Super wykona kod z odziedziczonej metody. – dombesz

Odpowiedz

15

To właśnie robię, aby zastąpić kontroler Devise Registrations. Musiałem złapać wyjątek, który może zostać zgłoszony podczas rejestracji nowego użytkownika, ale możesz zastosować tę samą technikę, aby dostosować logikę rejestracji.

app/controllers/opracowania/custom/registrations_controller.rb

class Devise::Custom::RegistrationsController < Devise::RegistrationsController 
    def new 
    super # no customization, simply call the devise implementation 
    end 

    def create 
    begin 
     super # this calls Devise::RegistrationsController#create 
    rescue MyApp::Error => e 
     e.errors.each { |error| resource.errors.add :base, error } 
     clean_up_passwords(resource) 
     respond_with_navigational(resource) { render_with_scope :new } 
    end 
    end 

    def update 
    super # no customization, simply call the devise implementation 
    end 

    protected 

    def after_sign_up_path_for(resource) 
    new_user_session_path 
    end 

    def after_inactive_sign_up_path_for(resource) 
    new_user_session_path 
    end 
end 

pamiętać, że stworzył nową strukturę katalogów pod app/controllersdevise/custom gdzie Położyłem dostosowaną wersję RegistrationsController. W rezultacie będziesz musiał przenieść swoje widoki rejestracji opracowań z app/views/devise/registrations do app/views/devise/custom/registrations.

Należy również pamiętać, że nadpisanie kontrolera rejestracyjnego pozwala dostosować kilka innych rzeczy, takich jak miejsce przekierowania użytkownika po pomyślnej rejestracji. Odbywa się to przez przesłonięcie metod after_sign_up_path_for i/lub after_inactive_sign_up_path_for.

routes.rb

devise_for :users, 
      :controllers => { :registrations => "devise/custom/registrations" } 

Ten post może oferować dodatkowe informacje, może być zainteresowany.

Powiązane problemy