Zusammenfassung: Ich versuche, der Wert eines Attributs innerhalb eine benutzerdefinierte ActiveModel::EachValidator
Validator zu verändern. Angesichts der folgenden Prototyp:ändern oder einen Attributwert aktualisieren während Rails Active Validierung
def validate_each(record, attribute, value)
versucht value = thing
einzustellen scheint nichts weiter zu tun - bin ich etwas fehlt? Es sollte eine kluge Möglichkeit sein, dies zu tun ...
Detail: Ich akzeptiere eine URL-Eingabe als Teil einer Website. Ich möchte nicht einfach die URL nehmen und direkt validieren, dass es eine 200 OK
Nachricht zurückgibt, weil das Einträge ignorieren würde, die nicht mit http
starteten, oder die führenden www
usw. ausgelassen haben. Ich habe einige benutzerdefinierte Logik, um damit umzugehen diese Fehler und folgen Umleitungen. Daher möchte ich die Validierung zu erfolgreich, wenn ein Benutzer example.org/article
statt http://www.example.org/article
eingeben. Die Logik funktioniert ordnungsgemäß innerhalb der Validierung, aber das Problem ist, dass, wenn jemand die erstere eingibt, der gespeicherte Wert in der Datenbank in der "falschen" Form und nicht in der schön aktualisierten Form ist. Kann ich den Eintrag während der Validierung in eine kanonische Form ändern?
+1 für eine gute Frage – neeraj