Я пытаюсь использовать драгоценный камень Devise в своем проекте. Это сработало, но у меня все еще есть проблема:
Я настроил устройство в своем приложении и сгенерировал представления, но добавил дополнительное поле в базу данных (имя пользователя). Итак, дело в том, что мне нужно это имя пользователя, но оно не сохраняется в базе данных, когда я создаю нового пользователя :/ Проблема, похоже, в контроллере, но я не знаю, как получить к нему доступ.
Скрывает ли Devise свои контроллеры? Могу ли я получить доступ к этому контроллеру и просто добавить нужное поле в параметры, например? Мне действительно нужно кодировать новый контроллер, который переопределит стандартный? Что я должен делать? и как?
Контроллеры Devise скрыты. Вы можете использовать решение Jay или попросить Devise явно сгенерировать контроллеры и настроить их: github.com/plataformatec/devise#configuring-контроллеры
Как сказано выше. Создайте контроллеры, а затем разрешите параметры.
См. документ: https://github.com/plataformatec/devise
Вы должны указать устройству сохранить дополнительные параметры в БД.
Ваш файл application_controller.rb выглядит так:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
end
end
Вы уже просмотрели документацию по разработке для сильные параметры? Они показывают, как разрешить дополнительные поля