Резюме:Я пытаюсь изменить значение атрибута в пользовательском валидаторе ActiveModel::EachValidator
. Учитывая следующий прототип:
def validate_each(record, attribute, value)
попытка установить value = thing
ничего не дает --я что-то упустил? Должен быть умный способ сделать это...
Деталь:Я принимаю ввод URL как часть сайта. Я не хочу просто взять URL-адрес и напрямую проверить, что он возвращает сообщение 200 OK
, потому что это будет игнорировать записи, которые не начинаются с http
, или пропустить начальный www
и т. д. У меня есть некоторая пользовательская логика для обработки этих ошибок и следования перенаправлениям. Таким образом, я бы хотел, чтобы проверка прошла успешно , если пользователь вводит example.org/article
, а не http://www.example.org/article
. Логика работает правильно внутри проверки, но проблема в том, что если кто-то вводит первую,сохраненное значение в базе данных находится в «неправильной» форме, а не в хорошо обновленной. Могу ли я изменить запись во время проверки на более каноническую форму?