password
не столбец в базе данных, верно?Просто атрибут?
Так что нет метода password_changed?
, который был бы доступен, если бы password
был столбцом.Скорее вам следует просто проверить, установлено ли значение password
.
Что-то вроде:
validates :password_confirmation, :presence => true, :if => '!password.nil?'
Хотя это решает первоначальную проблему, с которой вы столкнулись, это все равно не совсемделайте что хотите, так как это только проверка присутствия, и вам нужно, чтобы присутствовали и совпадают с паролем.Должно работать что-то вроде следующего (в сочетании с вышеупомянутой проверкой).
validates :password,
# you only need presence on create
:presence => { :on => :create },
# allow_nil for length (presence will handle it on create)
:length => { :minimum => 6, :allow_nil => true },
# and use confirmation to ensure they always match
:confirmation => true
Если вы никогда не видели :confirmation
раньше, это стандартная проверка, которая ищет foo
и foo_confirmation
иудостоверяется, что они одинаковы
Обратите внимание, что вам все равно нужно проверить наличие password_confirmation