deviseユーザーの作成時にJSON出力をカスタマイズするにはどうすればよいですか?ユーザーアカウントの作成時にDeviseユーザーのJSON応答をカスタマイズする
### User.rb ###
class User < ActiveRecord::Base
devise :database_authenticatable,
:registerable, ...
...
end
### Routes.rb ###
...
devise_for :users, :controllers => {:registrations => "registrations"}
...
私は秘密です、私のユーザーテーブル内のいくつかの余分なフィールドを持っているが、私はこのようなJSONを介してユーザの作成を行うときには、JSON応答で返されます:
$ curl -H "Content-Type: application/json" -d '{"user" : {"username":"someone","email":"[email protected]","password":"awesomepass"}}' -X POST http://localhost:3000/users.json
返します:
{"user":{"secret_field_1":"some value","secret_field_2":"some value","created_at":"2013-07-25T21:24:50-05:00","email":"[email protected]","first_name":null,"id":3226,"last_name":null,"updated_at":"2013-07-25T21:24:50-05:00","username":"someone"}}
これらの秘密のフィールドを非表示にしたいのですが、JSONレスポンスをカスタマイズする方法はわかりません。私が原因工夫の推測している、無駄に
class UserSerializer < ActiveModel::Serializer
attributes :id, :created_at, :updated_at, :email, :first_name, :last_name, :username
end
:
私は、標準のActiveRecordのシリアライザを試みました。
シリアライザが動作していません。私が持っているシリアライザコードには秘密のフィールドは含まれていませんが、JSONの出力はまだあります。 –
Railsがシリアライザを通過していますか? 何が起こるかを見るために、そのシリアライザにbinding.pryをドロップしようとする必要があります。そうでなければgithubや他の場所に対応するGemfile(.lock)でプロジェクトのサンプルをアップロードしようとします。 – Simon