Придумайте Gem, добавьте компоновщики и измените redirect_to

Я использую гем 'Devise' в приложении rails 3.1.1 для создания пользователей и входа в систему, но мне нужно добавить поля для профиля как @user.build_profile, но я не знаю, где это добавить, мне также нужно изменить значение по умолчанию redirect_to после входа в систему.

2 ответа

Решение

Вы можете добавить необходимые поля в свои модели так же, как это обычно делается при миграции. Если вы используете по умолчанию разработайте представления через rails generate devise:views, то вы захотите добавить свои поля в new а также edit взгляды внутри регистрации просмотров в разработке.

Что касается изменения перенаправления по умолчанию после sign_in, я бы начал с чтения Devise Wiki. Вы можете просто добавить в свой контроллер приложений:

 protected

      def stored_location_for(resource)
        nil
      end

      def after_sign_in_path_for(resource)
        #path to which you wish to redirect
      end
end

Это позволит вам настроить этот маршрут. Вы также можете посмотреть на контроллер регистрации в devise, чтобы увидеть другие методы, которые вы можете переопределить.

Редактировать:

Переопределение контроллера:

Вы бы создали свой собственный контроллер, который наследует от Devise::RegistrationsController, Оттуда вам нужно только указать методы, которые вам нужно переопределить, а не каждый из них. Например:

def create
  build_resource
  resource.build_profile

  if resource.save
    set_flash_message :notice, :signed_up
    redirect_to after_sign_up_path_for(resource)
  else
    clean_up_passwords(resource)
    render_with_scope :new
  end
end

Затем добавьте вышеупомянутые строки для stored location а также after_sign_in_path, Вы также должны сказать Devise в своем routes.rb использовать ваш новый контроллер с, devise_for :users, :controllers => { :registrations => 'your_controller_name } У меня есть пример этого в моем блоге, и полный источник находится на Github.

Или вы просто переопределите build_resource

def build_resource *a, &b
  super
  resource.build_profile
end
Другие вопросы по тегам