Hemos introducido un parche para evitar la serialización accidental de modelos de ActiveRecord sin especificar los campos a serializar. Este cambio garantiza que controlemos qué campos se incluyen, evitando posibles problemas por la exposición de datos incompletos o excesivos.
De forma predeterminada, la renderización de un modelo de ActiveRecord como JSON incluye todos los atributos, lo cual puede no ser deseable en muchos casos. Para aplicar mejores prácticas, es necesario especificar qué campos deben serializarse.
Ejemplos de uso
Uso incorrecto:
def show
@user = User.first
render json: @user
end
En desarrollo y pruebas, esto resultará en:
ActiveRecordSerializationSafety::BlockedSerializationError:
No se permite serializar modelos de ActiveRecord (User) sin especificar campos.
Usa un Serializer o pasa la opción :only a #serializable_hash. Más información: https://meta.discourse.org/t/-/314495
./lib/freedom_patches/active_record_disable_serialization.rb:15:in `serializable_hash'
Uso correcto:
- Usando un Serializer
class UserSerializer < ApplicationSerializer
attributes :id, :email
end
def show
@user = User.first
render json: @user, serializer: UserSerializer
end
- Usando la opción
:only
def show
@user = User.first
render json: @user.as_json(only: [:id, :email])
end
Este documento está bajo control de versiones: sugiera cambios en github.