Как настроить контроллер для регистрации в Devise? - PullRequest
5 голосов
/ 02 мая 2011

Мне нужно добавить несколько простых методов и действий, когда новый пользователь регистрируется через Devise.

Я хочу применить метод уведомления, который отправит мне электронное письмо.

Я хочуиспользуйте act_as_network, чтобы передать значение сеанса и подключить новый регистр к человеку, который их пригласил.

Как мне настроить, я посмотрел документы, но мне не совсем понятно, что мне нужно делать ....thanks!

1 Ответ

15 голосов
/ 15 мая 2011

Это то, что я делаю, чтобы переопределить контроллер Devise Registrations. Мне нужно было поймать исключение, которое потенциально может быть сгенерировано при регистрации нового пользователя, но вы можете применить ту же технику для настройки логики регистрации.

приложение / контроллеры / изобрести / заказ / 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

Обратите внимание, что я создал новую структуру каталогов devise/custom в app/controllers, где я разместил свою настроенную версию RegistrationsController. В результате вам нужно будет переместить ваши представления регистрации устройств с app/views/devise/registrations на app/views/devise/custom/registrations.

Также обратите внимание, что переопределение контроллера devis Registrations позволяет вам настроить несколько других вещей, например, куда перенаправлять пользователя после успешной регистрации. Это делается путем переопределения методов after_sign_up_path_for и / или after_inactive_sign_up_path_for.

routes.rb

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

Эта запись может предложить дополнительную информацию, которая может вас заинтересовать.

...