In un'applicazione Rails, i nomi di colonna, i tipi ei valori predefiniti vengono dedotti direttamente dal database. Esiste un modo per inferire le convalide dai vincoli del database durante l'inizializzazione o mentre si tenta di salvare?Converti vincoli di database in convalide di Rails
Ciò consentirebbe maggiore DRYness e assicurerà che tutti i dati possano essere convalidati in modo soft prima di colpire il DB e ottenere un'eccezione, poiché le convalide coprirebbero tutti i vincoli del database. I vincoli del database sono la fonte autorevole di informazioni sull'invalidità dei dati quando vengono utilizzati.
In alternativa, è possibile eseguire il salvataggio di ActiveRecord
da un vincolo di database e agire come se una convalida debole non fosse riuscita? Ciò significherebbe che i vincoli del database potrebbero essere manipolati esternamente senza riavviare o modificare l'app Rails, le prestazioni sarebbero migliorate perché le convalide di unicità non richiederebbero una query separata e anche che le convalide di unicità sarebbero immuni alle condizioni di gara.
Buona risposta! Non l'ho provato, ma la gemma sembra molto semplice, efficace e leggera sul codice sorgente, convertendo schema.rb in validazioni, ma non ispezionando il database. Non avrebbe funzionato per il mio caso d'uso, condividendo un DB con qualcuno che continuava a cambiare lo schema con spirito malvagio, ma che sicuramente potrebbe essere usato in futuro. – user1158559