У меня есть приложение Rails 5.2, созданное только как API.Я использую Почтальон для проверки конечных точек.В настоящее время я упаковываю все мои сообщения JSON с корневым элементом, чтобы он передавал «сильные параметры».Однако в соответствии с документацией Rails, когда wrap_parameters
настроен на прием JSON, мне не нужно этого делать, однако мои POST завершатся неудачно, если я этого не сделаю.Что я делаю не так?
# users_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :update, :destroy]
.....
# POST /users
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created, location: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
.....
private
.....
# Only allow a trusted parameter "white list" through.
def user_params
params.require(:user).permit(:email, :password, :is_admin, :is_agent)
end
end
# config/initializers/wrap_parameters.rb
ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end

Если я заверну JSON в user
это работает просто отлично, однако, согласно документации Rails, мне не нужно было этого делать.
http://api.rubyonrails.org/v5.2.0/classes/ActionController/ParamsWrapper.html
Я попытался добавить wrap_parameters User
и wrap_parameters :user
и wrap_parameters format: [:json]
прямо на users_controller.rb
, но это ничего не делает.
Что я делаю не так?