Hemos introducido un parche para evitar la serialización accidental de modelos ActiveRecord sin especificar los campos a serializar. Este cambio asegura que controlamos qué campos se incluyen, evitando problemas potenciales con la exposición de datos incompletos o excesivos.
Por defecto, renderizar un modelo ActiveRecord como JSON incluye todos los atributos, lo cual puede no ser deseable en muchos casos. Para aplicar mejores prácticas, necesitamos especificar qué campos deben ser serializados.
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 la serialización de modelos ActiveRecord (User) sin especificar campos.
Utiliza un Serializador 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 Serializador
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á controlado por versiones - sugiere cambios en github.