Хорошо:
User
attr_accessible :name, :email, :email_confirmation
validates_presence_of :email_confirmation if :email_changed?
Что происходит в следующей ситуации:
u = User.find 1
u.name = 'Fonzi'
u.name_changed? # => true
u.email_changed? # => false
u.valid? # => false : email_confirmation is required
В основном, если я изменю, если, если проверки не работают должным образом, не будет проверяться, если электронное письмо не изменилось, будет проверяться, если электронное письмо изменилось. Я думал, что IF указывает «запустить эту проверку, если следующая функция возвращает true. Кажется, что работает в обратном направлении!? Я просто ошибаюсь?