Forma correcta de implementar versiones de API con active_model_serializers

Sé que ya hay algunas preguntas y tambiénEste es un problema abierto con respecto a que AMS no maneja espacios de nombres de manera demasiado eficiente (que es utilizado por este enfoque de versiones) pero quería estar seguro de que estoy en el camino correcto dentro de las restricciones actuales.

En este momento estoy usando Rails 5 y AMS 0.10.1, así que hice lo siguiente:

# config/initializers/active_model_serializer.rb
ActiveModelSerializers.config.serializer_lookup_enabled = false

para deshabilitar la búsqueda predeterminada del serializador (que de todos modos no funcionó); y

# app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  def get_serializer(resource, options = {})
    unless options[:each_serializer] || options[:serializer] then
      serializer = (self.class.name.gsub("Controller","").singularize + "Serializer").constantize
      resource.respond_to?(:to_ary) ? options[:each_serializer] = serializer : options[:serializer] = serializer
    end
    super(resource, options)
  end
end

para anular cómo se encuentran los serializadores por defecto; mis controladores y serializador son así:

# app/controllers/api/v2/api_controller.rb
module Api::V2
  class ApiController < ApplicationController
    ...

# app/controllers/api/v2/users_controller.rb
module Api::V2
  class UsersController < ApiController
    ...

y

# app/serializers/api/v2/user_serializer.rb
module Api::V2
  class UserSerializer < ActiveModel::Serializer
    ...    

Ahora cosas comoActiveModel::Serializer.serializer_for(object) no funcionará, así que también tuve que parchear las especificaciones de mi solicitud usandoexample.metadata[:api_version] para configurar la versión de API antes de cada prueba y aumento y error si el ejemplo no lo configuró.

Entonces:

¿Hay una mejor manera documentada?¿Está esto cerca de ser correcto?¿Me enfrentaré más al problema con este enfoque?¿Cómo puede ser mejorado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta