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ユーザーモデルの属性として持っていません。User モデルでそれらを追加しようと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 ではなく params[:user] を参照する必要があります。

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