У Devise на самом деле есть только маршруты и контроллеры для изменения вашей учетной записи. Если вы хотите, чтобы интерфейс администрировал других пользователей, лучше всего просто создать его самостоятельно или найти существующую реализацию.
Несмотря на то, что эта функциональность безусловно возможна в Devise, она только испортится и нарушит SRP , поскольку ваш RegistrationsController больше не только отвечает за обработку регистрации пользователей, но и за администрирование других пользователей.
Вы можете в значительной степени просто работать с эшафотами Rails (rails g scaffold users --skip-migration --skip-model
), поскольку это не так уж и отличаетсяот CRUD'ов любого другого ресурса. Что вам действительно нужно, так это что-то вроде:
# routes.rb
resources :users, except: [:new, :create]
# This controller is for administrating other users
class UsersController < ApplicationController
# ensures that there is a logged in user
# you should also implement authorization that ensures that the user is allowed to administrate other users
before_action :authenticate_user!
# sets the user to be acted upon
before_action :set_user, only: [:show, :edit, :update, :destroy]
# PUT|PATCH /users/1
def update
if @user.update(user_params)
head :ok
else
head :unprocessable_entity
end
end
# ...
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:first_name)
end
end
const data = {
user = {
first_name: 'firstNameChanged'
}
};
axios.put('http://localhost:3000/users/10', data).then((res) => {
console.log('user updated');
});