Nous avons introduit un correctif pour empêcher la sérialisation accidentelle des modèles ActiveRecord sans spécification des champs à sérialiser. Cette modification nous permet de contrôler les champs inclus, évitant ainsi les problèmes potentiels liés à l’exposition de données incomplètes ou excessives.
Par défaut, le rendu d’un modèle ActiveRecord en JSON inclut tous les attributs, ce qui n’est pas toujours souhaitable. Pour imposer de meilleures pratiques, il est nécessaire de spécifier les champs à sérialiser.
Exemples d’utilisation
Utilisation incorrecte :
def show
@user = User.first
render json: @user
end
En développement et dans les tests, cela entraînera :
ActiveRecordSerializationSafety::BlockedSerializationError:
La sérialisation des modèles ActiveRecord (User) sans spécification des champs n’est pas autorisée.
Utilisez un Serializer, ou passez l’option :only à #serializable_hash. Plus d’informations : https://meta.discourse.org/t/-/314495
./lib/freedom_patches/active_record_disable_serialization.rb:15:in `serializable_hash'
Utilisation correcte :
- Utilisation d’un Serializer
class UserSerializer < ApplicationSerializer
attributes :id, :email
end
def show
@user = User.first
render json: @user, serializer: UserSerializer
end
- Utilisation de l’option
:only
def show
@user = User.first
render json: @user.as_json(only: [:id, :email])
end
Ce document est versionné - suggérez des modifications sur github.