Проверка Rails не удалась, но память объекта осталась неизменной? - PullRequest
0 голосов
/ 17 марта 2011

Первый пользователь, давно читатель.Я тщательно искал объяснение проблемы, с которой сталкиваюсь, через могущественную поисковую систему Google, но, увы, мне не удалось дать какой-либо существенной информации.

Мне нужно убедиться, что форма модели соответствуетне загружен с неверными данными.Поскольку модель, хранящаяся в памяти на сервере, сначала редактируется непосредственно с помощью параметров веб-формы, а затем проверяется на достоверность, без дополнительного кода недействительные данные модели ВСЕГДА будут отправляться обратно в форму.Это менее чем желательно для меня.У меня такой вопрос: как мне убедиться, что этого не произойдет?

Я думаю, мне нужен какой-то механизм для сохранения состояния объекта до того, как он будет изменен параметрамиотправлено из веб-формы, а затем после неудачной проверки восстановите объект до его предыдущего, правильного и неизмененного состояния.

Справка!

Спасибо, Les

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Чтобы добавить к тому, что concept47 сказал, вы также можете получить значение для определенного поля, используя object.field_was. Подробнее об ActiveRecord :: Dirty (http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html)

). Используя это, вы можете получить исходные значения только дляте поля, которые имели ошибки проверки.

0 голосов
/ 17 марта 2011

Объект фактически не изменяется в БД, если проверка не пройдена, даже если объект находится в недопустимом состоянии в форме ... за этим стоит мысль, что пользователь хочет увидеть ошибки, которые он сделал, чтобы они моглиисправьте их.

Если вы не хотите, чтобы это имело место, просто прочитайте объект с помощью WhwhatObject.find (x) и присвойте его переменной, на которую ссылается форма, и она будет 'восстановить объект в его прежнем неизмененном состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...