Я понял, что делать, чтобы достичь желаемого результата.Во-первых, нам нужно добавить active_model_serializers
к Gemfile
, затем bundle install
.
После того, как мы установили гем, мы должны добавить include ActionController::Serialization
к каждому контроллеру, который будет использовать Serializer.
Мы генерируем новый сериализатор, используя rails g serializer speaker
.Мой SpeakerSerializer
выглядит так:
class SpeakerSerializer < ActiveModel::Serializer
attributes :id, :name, :email, :company, :avatar
def avatar
rails_blob_path(object.avatar, only_path: true) if object.avatar.attached?
end
end
А мой вывод выглядит как
{
"speaker": {
"id": 2,
"name": "Rafael",
"email": "rafael.almeida@xing.com",
"company": "XING",
"avatar": "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--515a0de8817b3529b5d3d168871cebf6ccee0463/xing-photo.jpg"
}
}