Я использую драгоценный камень active_model_serializers, и я столкнулся с некоторыми проблемами с управлением версиями.Versioning ActiveModel :: Сериализатор
Контроллеры
В app/controllers/v1/contracts_controller.rb
module V1
class ContractsController < ApiController
def index
@contracts = Contract.all
render json: @contracts
end
end
end
В app/controllers/v2/contracts_controller.rb
module V2
class ContractsController < ApiController
def index
@contracts = Contract.all
render json: @contracts
end
end
end
сериализаторы
В app/serializers/v1/contract_serializer.rb
class ContractSerializer < ActiveModel::Serializer
attributes :id
end
В app/serializers/v2/contract_serializer.rb
class ContractSerializer < ActiveModel::Serializer
attributes :id, :name
end
Могу ли я назвать маршрут /v1/contracts
или /v2/contracts
, тонированное JSON включают имя контракта, а это значит, что сериализатору в v2, кажется, всегда называется.
FYI, я добавил config.autoload_paths += Dir[Rails.root.join('app', 'serializers', '**/')]
в config/application.rb