Witajcie
chcę sobie zrobić metodę, która sprawdza, czy user podał stare hasło, i jeśli jest ono zgodne z tym zapisanym w bazie, to chcę pozwolić na zmianę hasła.
[code] before_update :check_password
def check_password
unless self.old_password.empty?
if self.old_password == #(1).password
# tutaj reszta
end
end
end[/code]
może mi ktoś jednak powiedzieć, w jaki sposób odwołać się do aktualnego pola password w bazie?
Sprawdź coś takiego:
[code]def check_password
unless self.old_password.empty?
if sprawdz_poprawnosc_hasla(self.old_password)
# tutaj reszta
end
end
end
def sprawdz_poprawnosc_hasla(pass)
return if pass.blank?
Digest::SHA1.hexdigest(pass) == self.crypted_password // albo inne kodowanie, porównanie podanego hasła z tym zakodowanym w bazie 
end[/code]
Hmm, oto moja metoda do sprawdzania poprawności starego hasła przy aktualizacji na nowe:
[code]attr_accessor :old_password
validates_presence_of :old_password, :if => :old_password_required?
def old_password_required?
if self.old_password
errors.add(:old_password, ‘is incorrect!’) unless password?(self.old_password)
end
end[/code]
Czekam na sugestie o poprawności jej napisania bardziej doświadczonych koderów 