版本控制ActiveModel :: Serializer
我正在使用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
无论我调用route /v1/contracts
还是/v2/contracts
,渲染的json都包含合约名称,这意味着v2中的序列化程序似乎总是被调用。
仅供参考,我在config/application.rb
添加了config.autoload_paths += Dir[Rails.root.join('app', 'serializers', '**/')]
您需要在控制器中指定序列化器,例如我的答案
- 更改活动模型序列化器默认适配器
- 使用active_model_serializers实现API版本控制的正确方法
- 渴望与Active Model Serializers加载关联
- Rails Active Model Serializer – has_many并访问父记录
- Rails 3.2,保存序列化哈希不会保存number_with_delimiter()
- Active Model Serializer和Pundit在显示CRUD操作期间删除记录
- 如何使用active_model_serializers为嵌套对象选择序列化程序
- Active Model Serializers:nil的未定义方法`url_for’:NilClass
- ActiveModel :: Serializer无法正常工作