Nous avons introduit un correctif pour empêcher la sérialisation accidentelle des modèles ActiveRecord sans spécifier les champs à sérialiser. Ce changement garantit que nous contrôlons les champs inclus, évitant ainsi les problèmes potentiels d’exposition de données incomplètes ou excessives.
Par défaut, le rendu d’un modèle ActiveRecord au format JSON inclut tous les attributs, ce qui peut ne pas être souhaitable dans de nombreux cas. Pour appliquer de meilleures pratiques, nous devons spécifier quels champs doivent être sérialisés.
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écifier les 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 sous contrôle de version - suggérez des modifications sur github.