У меня есть validates_confirmation_of :password
в моей модели пользователя. Проблема в том, что я также запускаю @comment.user.save!
при создании комментария для обновления некоторых атрибутов учетной записи пользователя.
Я получаю ошибку при создании комментария Validation failed: Password confirmation can't be blank
. Я не могу добавить :on => "save"
к моей проверке, потому что мой comments
контроллер также вызывает функцию сохранения.
Я читал эту ветку Проверка модели Rails только при создании и обновлении , но она не отвечает на мою конкретную проблему.
UPDATE
Фрагмент модели пользователя:
class User < ActiveRecord::Base
attr_accessor :password
# validations
validates_presence_of :username
validates_length_of :username, :within => 6..25
validates_uniqueness_of :username
validates_presence_of :email
validates_length_of :email, :maximum => 100
validates_format_of :email, :with => EMAIL_REGEX
validates_confirmation_of :password, :if => :password_changed?
validates_presence_of :password_confirmation
validates_length_of :password, :within => 4..25, :on => :create
before_save :create_hashed_password
after_save :clear_password
private
def clear_password
self.password = nil
end
end