Hemos introducido un parche para evitar la serialización accidental de modelos de ActiveRecord sin especificar los campos a serializar. Este cambio asegura que controlamos qué campos se incluyen, evitando problemas potenciales de datos incompletos o excesivos que se expongan.
Por defecto, renderizar un modelo de ActiveRecord como JSON incluye todos los atributos, lo cual puede no ser deseable en muchos casos. Para forzar mejores prácticas, necesitamos 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:
Serializing ActiveRecord models (User) without specifying fields is not allowed.
Use a Serializer, or pass the :only option to #serializable_hash. More info: 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.