Что я сейчас делаю, так это:
validates :new_pass,
:presence => {:if => :new_record?},
:confirmation => {:if => :password_not_blank?},
:length => {:within => 6...64, :if => :password_not_blank?}
def password_not_blank?
!new_pass.blank?
end
Но это не СУХОЙ, держу пари, есть способ пропустить проверки, если атрибут отсутствует.
Кроме того, не существует метода DSL для проверки? Я думаю, что это будет чище, чем реализация логики внутри хешей ...
- Правка, спасибо ^^ -
Вот что я получил сейчас:
validates :new_pass,
:allow_blank => {:on => :update},
:presence => {:on => :create},
:confirmation => true,
:length => {:within => 6...64}
И только для записи, и поэтому никто не беспокоится (?), Это виртуальный атрибут, фактический пароль шифруется с помощью before_save, проверяя, что: new_pass не пуст.