Abbiamo introdotto una patch per prevenire la serializzazione accidentale dei modelli ActiveRecord senza specificare i campi da serializzare. Questa modifica garantisce che possiamo controllare quali campi sono inclusi, evitando potenziali problemi legati all’esposizione di dati incompleti o eccessivi.
In modo predefinito, il rendering di un modello ActiveRecord in JSON include tutti gli attributi, il che potrebbe non essere desiderabile in molti casi. Per promuovere pratiche migliori, è necessario specificare quali campi devono essere serializzati.
Esempi di utilizzo
Utilizzo errato:
def show
@user = User.first
render json: @user
end
In ambiente di sviluppo e nei test, questo comporterà:
ActiveRecordSerializationSafety::BlockedSerializationError:
Non è consentita la serializzazione di modelli ActiveRecord (User) senza specificare i campi.
Usa un Serializer o passa l'opzione :only a #serializable_hash. Ulteriori informazioni: 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 è sottoposto a controllo di versione - suggerisci modifiche su github.