Sommario: Sto cercando di alterare il valore di un attributo all'interno una consuetudine ActiveModel::EachValidator
validatore. Dato il seguente prototipo:cambiare o aggiornare un valore di attributo durante la validazione Rails ActiveRecord
def validate_each(record, attribute, value)
cercando di impostare value = thing
non sembra di fare nulla - mi sto perdendo qualcosa? Ci dovrebbe essere un modo intelligente per farlo ...
Dettagli: Accetto un input URL come parte di un sito. Non voglio solo prendere l'URL e convalidare direttamente che restituisce un messaggio 200 OK
, poiché ciò ignorerebbe le voci che non iniziavano con http
, o lasciavano fuori il leader www
, ecc. Ho qualche logica personalizzata da gestire quegli errori e seguire i reindirizzamenti. Pertanto, mi piacerebbe che la convalida a succeda a se un utente digita example.org/article
anziché http://www.example.org/article
. La logica funziona correttamente all'interno della convalida, ma il problema è che se qualcuno inserisce il primo, il valore memorizzato nel database è nella forma "errata" piuttosto che quella ben aggiornata. Posso modificare la voce durante la convalida in una forma più canonica?
+1 per fare una buona domanda – neeraj