У меня есть обратный вызов before_validation
, который переформатирует одну из записей. Мне нужно, чтобы он выполнялся до проверки, чтобы убедиться, что отформатированный результат был правильно проанализирован. Но насколько я понимаю каждый раз, когда я вызываю valid?
, чтобы проверить, все ли данные в порядке, запись будет переформатирована. Могу ли я сделать это по-другому, потому что на valid?
я просто хочу проверить, действительно ли все поля и что-то не меняют.Добавить формирование перед сохранением и валидацией без обременения "validate?"
1
A
ответ
2
это выглядит очень похоже на это: Rails model validation on create and update only
Вы можете сделать
before_validation(:on => :create) do
reformat #method call, not a symbol
end
before_validation(:on => :update) do
reformat #method call, not a symbol
end
, но он по-прежнему работает для меня, когда я звоню valid?
. Не знаю, почему, хотя, потому что это не в контексте создания или обновления, поэтому я чувствую, что Rails лежит на нас в этом случае.
Если вы могли бы сделать это в before_save
, тогда он должен работать, так как он запускается после проверки. Вы сказали, что нужно проверить, что это все-таки хорошо, когда вы переформатировать, так что, возможно добавить новый метод для проверки переформатирования, и сделать
before_save :reformat, :validate_reformatting
или добавить проверку вменяемости в конце вашего метода, который используется для переформатирования ,
Смежные вопросы
- 1. Validate встраивает перед сохранением модели
- 2. Validate номер телефона перед сохранением
- 3. Добавить данные в объект ModelForm перед сохранением
- 4. Вручную запускать jQuery.validate перед сохранением
- 5. Drupal. как добавить проверку перед сохранением формы
- 6. Проверка перед сохранением Rails
- 7. Создайте массив перед сохранением/проверкой
- 8. Выполнение логики перед сохранением или валидацией с помощью моделей EF Code-First
- 9. Манипулируйте видеокадр перед сохранением
- 10. шифрованной пользователя перед сохранением
- 11. Encode NSArray перед сохранением
- 12. Событие RowEditEnded перед сохранением
- 13. WPF Databind перед сохранением
- 14. laravel: дезинфицировать данные запроса перед валидацией
- 15. cakePHP данные проверки перед сохранением
- 16. Изменение перед сохранением
- 17. Обратный вызов «Перед сохранением»
- 18. Проверка корректности PARAMS перед сохранением
- 19. Измените ввод перед валидацией на Laravel 5.1
- 20. нажмите кнопку подтверждения перед сохранением
- 21. модели Django - перед сохранением/создать
- 22. Скрепка - переименовать файл перед сохранением
- 23. Зафиксировать значение вычисления перед сохранением
- 24. ckeck категория сообщения перед сохранением
- 25. Validate перед столбом
- 26. мангуст модели обновления перед сохранением
- 27. Добавление данных перед сохранением в CakePHP
- 28. Laravel генерировать слизь перед сохранением
- 29. Загрузить файл и переименовать перед сохранением
- 30. Интерполяция ключа атрибута перед сохранением
Это не сработает :(В первую очередь ': on => [: create,: update]' дает ошибку: 'неожиданный '[', ожидающий tSTRING_CONTENT или tSTRING_DBEG или tSTRING_DVAR или tSTRING_END ... (self.validation_context ==: [: create,: update]), а затем добавляю ': on =>: save' метод обратного вызова не вызывается на' .save' – Uko
Простите, я не читал другая тема, о которой я упомянул достаточно подробно, и на самом деле сказал: ': on => [: create,: update]' не работает, а ': on =>: save' тоже не работает для меня. обновите с правильным синтаксисом, чтобы сделать это, но он все еще работает на 'valid?' для меня. – keithepley