1

我正在尝试使用 JSON 通过 POST 创建设计用户。

控制器的当前代码是

class V1::UsersController < ApplicationController
  load_and_authorize_resource
  respond_to :json

  def create
    @user = User.create(params)
    if @user.save
      render json: @user, status: :created
    else
      render json: @user.errors, status: :unprocesssable_entry
    end
  end

end

我将以下 JSON 作为 POST 发送到http://localhost:3000/v1/users.json

{"user":{"active":true,"email":"test@email.com","username":"test"}, "auth_token":"my token"}

问题是我看到一个错误,需要将一些似乎是 Rails 内部的属性列入白名单。我没有user, format, action, controller我的用户模型的属性。我尝试attr_accesible在用户模型中添加它们,但随后 POST 返回未找到这些属性。

<h1>
  ActiveModel::MassAssignmentSecurity::Error
    in V1::UsersController#create
</h1>
<pre>Can&#x27;t mass-assign protected attributes: user, format, action, controller</pre>

知道如何解决这个问题吗?

4

1 回答 1

4

您必须参考 params[:user] 而不是 params:

@user = User.create(params[:user])
于 2012-09-05T08:43:41.130 回答