serializers rails new custom as_json active ruby-on-rails active-model-serializers

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)