ActiveAdmin изменить пароль внутри приложения

Я покинул страницу разработки, чтобы пользователи могли изменить свой пароль в ActiveAdmin. Метод 3 не работает как есть, поэтому мне пришлось немного его изменить для ActiveAdmin

ActiveAdmin.register_page 'UserPassword' do

  def user_params
    params.required(:user).permit(:password, :password_confirmation)
  end

  page_action :update_password, method: :post do
    @user = AdminUser.find(current_admin_user.id)
    if @user.update(params.required(:user).permit(:password, :password_confirmation))
      # Sign in the user by passing validation in case their password changed
      sign_in @user, :bypass => true
      redirect_to admin_root_path, notice: "Your password was changed"
    else
      redirect_to admin_userpassword_path, alert: "Your password couldn't be changed"

    end
  end

  content do
    render partial: 'edit', locals: {user: current_admin_user}
  end
end

Я должен был изменить if @user.update(params.required(:user).permit(:password, :password_confirmation)) так как if (@user.update(user_params)) выдаст ошибку, сказав undefined local variable or method user_params

Является ли код, который я перечислил выше, правильным подходом, позволяющим пользователям изменять свои пароли в макете ActiveAdmin?

1 ответ

Я бы зарегистрировал модель User в качестве ресурса в ActiveAdmin. Затем вы можете использовать блок формы для создания формы, где использование может изменить пароль.

ActiveAdmin.register User do
  ...
  form do |f|
    inputs 'Details' do
      input :password
      input :password_confirmation
    end
    actions
  end
  ...
end
Другие вопросы по тегам