我有一个用户模型
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"]}
我试过其他的答案,就像所列的那个 此处但它没有工作
正如Matt所指出的,这是因为digest属性是nil。我把它添加到固定装置中,现在它工作了。