Abbiamo introdotto una patch per impedire la serializzazione accidentale di modelli ActiveRecord senza specificare i campi da serializzare. Questa modifica garantisce che controlliamo quali campi sono inclusi, evitando potenziali problemi con dati incompleti o eccessivi che vengono esposti.
Per impostazione predefinita, la resa di un modello ActiveRecord come JSON include tutti gli attributi, il che potrebbe non essere desiderabile in molti casi. Per imporre migliori pratiche, è 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, ciò comporterà:
ActiveRecordSerializationSafety::BlockedSerializationError:
La serializzazione di modelli ActiveRecord (User) senza specificare i campi non è consentita.
Utilizzare un Serializer o passare l'opzione :only a #serializable_hash. Maggiori 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 è controllato dalla versione - suggerisci modifiche su github.