У меня есть модель пользователя
class User < ApplicationRecord
include ApplicationConstants
enum role: { admin: 0, waiter: 1, chef:2 }
has_secure_password
validates :name, :role, presence: true, on: :create
validates :email, uniqueness: true, format: EMAIL_REGEX
validates :password, length: { minimum: 8 }, allow_blank: true
end
Определение контроллера:
before_action :set_user, only: [:show, :update, :destroy]
def update
if @user.update(user_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
def set_user
@user = User.find(params[:id])
end
def user_params
params.permit(:name, :role, :email, :password, :password_confirmation)
end
Проблема в том, что следующий тестовый пример не работает
test "should update user" do
put user_url(@user), params: { name: @user.name }
assert_response 200
end
Ошибка: {"password":["can't be blank"]}
Я пробовал другие ответы, подобные приведенному здесь, но это не сработало.
has_secure_password
— пароль должен присутствовать при создании. См. api.rubyonrails.org/classes/ActiveModel/SecurePassword/. -› Этот механизм требует наличия атрибута XXX_digest. Где XXX — имя атрибута желаемого пароля. - person Matt   schedule 10.06.2020