Làm cách nào để tùy chỉnh đầu ra JSON khi tạo Người dùng thành lập?Tùy chỉnh đưa ra phản hồi JSON của người dùng khi tạo tài khoản người dùng
### User.rb ###
class User < ActiveRecord::Base
devise :database_authenticatable,
:registerable, ...
...
end
### Routes.rb ###
...
devise_for :users, :controllers => {:registrations => "registrations"}
...
tôi đã có một số trường bổ sung trong bảng tài khoản của tôi mà là bí mật, nhưng họ nhận được trả lại trong phản ứng JSON khi tôi làm một tạo tài khoản thông qua JSON như thế này:
$ curl -H "Content-Type: application/json" -d '{"user" : {"username":"someone","email":"[email protected]","password":"awesomepass"}}' -X POST http://localhost:3000/users.json
trả về :
{"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"}}
Tôi muốn ẩn các trường bí mật đó, nhưng không biết cách tùy chỉnh phản hồi JSON.
Tôi đã thử một ActiveRecord serializer tiêu chuẩn:
class UserSerializer < ActiveModel::Serializer
attributes :id, :created_at, :updated_at, :email, :first_name, :last_name, :username
end
không có kết quả, tôi đoán vì lập mưu.
Trình nối tiếp không hoạt động. Mã serializer mà tôi không có chứa các trường bí mật, nhưng đầu ra JSON vẫn làm. –
Bạn có chắc là Rails đang chạy qua serializer không? Có lẽ bạn nên cố gắng để thả một binding.pry vào serializer đó để xem những gì sẽ xảy ra. Khác, cố gắng tải lên trên github hoặc ở một nơi khác một mẫu dự án của bạn với Gemfile tương ứng (.lock), tôi sẽ xem xét nó. – Simon