“ password_digest不能为空”和“ password不能为空”错误

问题描述 投票:0回答:1

我正在尝试通过邮递员创建用户,如屏幕截图所示,但出现错误:

enter image description here

这是使用--api选项创建的Rails应用。

user.rb

class User < ApplicationRecord
  validates :email, uniqueness: true
  validates_format_of :email, with: /@/
  validates :password_digest, presence: true

  has_secure_password
end

users_controller.rb

class Api::V1::UsersController < ApplicationController
    # GET /users/1
    def show
      render json: User.find(params[:id])
    end
    # POST /users
    def create
        @user = User.new(user_params)

        if @user.save
            render json: @user, status: :created
        else
            render json: @user.errors, status: :unprocessable_entity
        end
    end

    private

    def user_params
        params.require(:user).permit(:email, :password)
    end
end

routes.rb

Rails.application.routes.draw do
  namespace :api, defaults: { format: :json } do
    namespace :v1 do
      resources :users, only: [:show, :create]
    end
  end
end
ruby-on-rails ruby postman rails-api ruby-on-rails-6
1个回答
0
投票

您的user_params方法需要嵌套在user哈希中的属性。将响应更改为:

{
  user: {
    email: '...',
    password: '...'
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.