Мои пользователи имеют name
наряду с регулярными столбцами, такими как электронная почта, пароль и т. Д. Я бы хотел, чтобы пользователи могли редактировать свои собственные настройки учетной записи, включая их имя, - /users/edit
, который, к счастью, предлагает нам из коробки как часть registrations
.Обновление пользовательских атрибутов с помощью существующих пользователей Devise/редактирования функциональности
Я добавил name
вход на представление (упрощенный здесь):
= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
= f.input :name, required: false
= f.input :email, required: true
= f.input :password, autocomplete: 'off', required: false
= f.input :password_confirmation, required: false
= f.submit 'Save'
Это делает имя правильно в форме, и я могу редактировать и сохранять, однако имя не обновляется, а другие вещи , Я представил себе, что Devise просто возьмет то, что params
находится в форме, и обновите resource
с этими параметрами независимо от того, кем они были, но это, похоже, не так.
Я получил это работает переопределение контроллера (опять же только самым важным код показан):
class RegistrationsController < Devise::RegistrationsController
def update
resource.name = params[:user][:name]
resource.save
super
end
end
Это работает хорошо, но есть более простой, встроенный способ сделать это я пропускаю ?
Cheers. Я закончил тем, что добавил его в 'application_controller', а не в инициализатор. –
Добавление его в 'application_controller' будет делать трюк, но в то же время он делает ваш контроллер неуклюжим. Добавление этого в отдельный инициализатор упрощает чтение/настройку и сохраняет код контроллера чистым. В любом случае, окончательный звонок - ваш :) – 31piy