Как в Ruby on Rails обойти validates?

программирование ruby on rails rails RoR

Используется валидация длины (а соответственно и существования) пароля для формы в Rails. Необходимо в форме регистрации эту валидацию выполнять, а при редактировании данных, если пароль пустой, оставлять тот, что был в БД. Как реализовать?
В Rails я новичок.

Примечание:
Спасибо за подсказку! В следующий раз буду знать, а пока использовал такой вариант:
Разрешил в валидации :allow_blank => true, далее в методе изменил на
self.encrypted_password = encrypt(password) if !password.blank?
Теперь, если пароль пустой, он не криптуется, а соответственно, и не изменяется в БД. Осталось дописать условие для регистрации, чтобы там нельзя было ввести пустой пароль:
def create
@user = User.new(params[:user])
if @user.password.blank?
flash.now[:error] = "Пароль не может быть пустым!"
render 'register'
else
@user.id = User.last.id + 1
if @user.save
log_in @user
flash[:success] = "Спасибо за регистрацию!"
redirect_to @user
else
@title = "Регистрация"
render 'register'
end
end
end

P.S. Не спрашивайте меня, зачем я делаю User.last.id + 1. Просто сначала хостился на ActiveCloud, а у них глобальное значение AUTO_INCREAMENT = 10, и его не изменить, как ответили мне в техподдержке. Теперь хостинг от Locum, тем не менее, решил на время разработки отключить A_I, прибавляя id вручную, так проще ориентироваться в своих тестовых пользователях.
Думаю, и предложенный Вами вариант в данном случае не подойдет, т.к. валидация будет происходить только при регистрации, а при изменении данных пользователя, даже если он укажет пароль, валидация производиться не будет.
Ответы:
validates_что_вы_там_валидируете :password, :if => :new_character


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.