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 les problèmes potentiels de données incomplètes ou excessives exposées.
Par défaut, le rendu d’un modèle ActiveRecord au format JSON inclut tous les attributs, ce qui n’est souvent pas souhaitable. Pour imposer 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 résultera 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'
Utilisation correcte :
- Utilisation d’un Serializer (Sérialiseur)
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 contrôlé par version - suggérez des modifications sur github.