Abbiamo introdotto una patch per impedire la serializzazione accidentale dei modelli ActiveRecord senza specificare i campi da serializzare. Questa modifica assicura che controlliamo quali campi sono inclusi, evitando potenziali problemi con dati incompleti o eccessivi esposti.
Per impostazione predefinita, il rendering di un modello ActiveRecord come JSON include tutti gli attributi, il che potrebbe non essere desiderabile in molti casi. Per imporre pratiche migliori, è necessario specificare quali campi devono essere serializzati.
Esempi di Utilizzo
Utilizzo Errato:
def show
@user = User.first
render json: @user
end
In sviluppo e nei test, questo risulterà in:
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'
Utilizzo Corretto:
- Utilizzo di un Serializer
class UserSerializer < ApplicationSerializer
attributes :id, :email
end
def show
@user = User.first
render json: @user, serializer: UserSerializer
end
- Utilizzo dell’opzione
:only
def show
@user = User.first
render json: @user.as_json(only: [:id, :email])
end
Questo documento è soggetto a controllo di versione - suggerisci modifiche su github.