版本控制ActiveModel :: Serializer

时间:2014-10-02 11:27:54

标签: ruby-on-rails activemodel active-model-serializers

我正在使用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

1 个答案:

答案 0 :(得分:0)

您需要在控制器中指定序列化程序,例如my answer here