デバイス ユーザーの作成時に JSON 出力をカスタマイズするにはどうすればよいですか?
### User.rb ###
class User < ActiveRecord::Base
devise :database_authenticatable,
:registerable, ...
...
end
### Routes.rb ###
...
devise_for :users, :controllers => {:registrations => "registrations"}
...
User テーブルに秘密の追加フィールドがいくつかありますが、JSON を介して次のように User 作成を行うと、JSON 応答でそれらが返されます。
$ curl -H "Content-Type: application/json" -d '{"user" : {"username":"someone","email":"someone@somewhere.com","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":"someone@somewhere.com","first_name":null,"id":3226,"last_name":null,"updated_at":"2013-07-25T21:24:50-05:00","username":"someone"}}
これらの秘密のフィールドを非表示にしたいのですが、JSON 応答をカスタマイズする方法がわかりません。
標準の ActiveRecord シリアライザを試しました:
class UserSerializer < ActiveModel::Serializer
attributes :id, :created_at, :updated_at, :email, :first_name, :last_name, :username
end
役に立たなかったのは、Devise のせいだと思います。