我正在使用gem active_model_serializers ,我正面临着版本化方面的一些问题。
控制器
在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中的序列化器似乎总是被调用。
仅供参考,我在config.autoload_paths += Dir[Rails.root.join('app', 'serializers', '**/')]
config/application.rb