ruby-on-rails - new - rails serializer nested
¿Url Helpers en ActiveModelSerializer 0.10.0? (2)
Sé que esta versión aún no se ha lanzado oficialmente, pero estaba revisando rc3 hoy y noté que ya no puedo usar los ayudantes de URL de Rails dentro de mis serializadores. En la versión 0.8.x, podría hacer lo siguiente:
class BrandSerializer < BaseSerializer
attributes :id, :name, :slug, :state
attributes :_links
def _links
{
self: api_v1_company_brand_path(object.company_id, object.id),
company: api_v1_company_path(object.company_id),
products: api_v1_company_brand_products_path(object.company_id, object.id)
}
end
end
Pero esto es un no ir en la nueva versión. ¿Cuál es la mejor manera de resolver esto para poder mantener mis enlaces en mi serializador?
Edit: Por ahora estoy haciendo lo siguiente, pero me encantaría escuchar si hay una forma más idiomática.
class BaseSerializer < ActiveModel::Serializer
include Rails.application.routes.url_helpers
Si agrega esto a su ApplicationController
o incluso probablemente al controlador que genera la respuesta:
serialization_scope :view_context
Luego puede usar el view_context
en el serializador para acceder a los ayudantes de URL (o cualquier método de visualización realmente).
Ejemplo: view_context.api_v1_company_brand_path(object.company_id, object.id)
Pensé que esto era probablemente más limpio que incluir a todos los ayudantes de URL, etc. en la clase de serializadores.
incluir la biblioteca que había sido excluida (como lo habías hecho) sería definitivamente la ruta más corta (fuera de revisar la gema misma, en términos de idiotez)