在 Rails 中更改 POST 上的 JSON 属性名称?

Change JSON attribute name on POST in Rails?

所以 Rails-API 应该接受 JSON post for

{
"post": {  "users": [{"name": "James"}]}
}

现在的问题是,我正在使用 nested_attributes,在 Post 模型中我有以下行:

     `accepts_nested_attributes_for :users`

如何在 POST 中接受属性名称 "users" 而不是 "users_attributes"?

posts_controller.rb

def create
@post = Post.new(post_params)
users = params.values[0].delete(:users_attributes)
params.values[0][:users] = users


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

...

   def post_params
      users = params.values[0].delete(:users_attributes) params.values[0][:users] = users
      params.require(:post).permit(:expiration, :users => [:name, :dates], :users_attributes => [:name, :post_id, :dates => []])

   end
 end

你可以试试这个

假设你的参数是

params = { post: {
name: 'war', users_attributes: [
{ title: 'Ruby documentation browser!' },
{ title: 'the modern citizen' },
{ title: '', destroy: '1' }]}}

users = params.values[0].delete(:users_attributes)
params.values[0][:users] = users