Измените или обновите значение атрибута во время проверки Rails ActiveRecord

Резюме:Я пытаюсь изменить значение атрибута в пользовательском валидаторе ActiveModel::EachValidator. Учитывая следующий прототип:

def validate_each(record, attribute, value)

попытка установить value = thingничего не дает --я что-то упустил? Должен быть умный способ сделать это...

Деталь:Я принимаю ввод URL как часть сайта. Я не хочу просто взять URL-адрес и напрямую проверить, что он возвращает сообщение 200 OK, потому что это будет игнорировать записи, которые не начинаются с http, или пропустить начальный wwwи т. д. У меня есть некоторая пользовательская логика для обработки этих ошибок и следования перенаправлениям. Таким образом, я бы хотел, чтобы проверка прошла успешно , если пользователь вводит example.org/article, а не http://www.example.org/article. Логика работает правильно внутри проверки, но проблема в том, что если кто-то вводит первую,сохраненное значение в базе данных находится в «неправильной» форме, а не в хорошо обновленной. Могу ли я изменить запись во время проверки на более каноническую форму?

6
задан aardvarkk 30 July 2012 в 18:15
поделиться