Zmiana innego rekordu, podczas zmiany rekordu

irb(main):002:0> a = Player.last => #<Player id: 2, name: "Samuel_Fontessa", password: "26103a282a81015d54d1b5d43 58afd7c", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:54:46", avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0, organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes: 0, warns: 0, sex: nil, email: nil, active: 0> irb(main):003:0> a.password = "123" => "123" irb(main):004:0> a.save => true irb(main):005:0> a = Player.last => #<Player id: 2, name: "Samuel_Fontessa", password: "202cb962ac59075b964b07152 d234b70", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:55:21", avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0, organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes: 0, warns: 0, sex: nil, email: nil, active: 0> irb(main):006:0> a.kp = 1 => 1 irb(main):007:0> a.save => true irb(main):008:0> a = Player.last => #<Player id: 2, name: "Samuel_Fontessa", password: "d9b1d7db4cd6e70935368a1ef b10e377", created_at: "2011-11-22 19:31:09", updated_at: "2011-11-25 12:55:27", avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_u pdated_at: nil, skin: 185, kp: 1, money: 500, bank: 1000, job: 0, job_level: 0, organization: 1, rank: 1, player_level: 1, skype: "bangeusz", gadu: 7299462, sig nature: "Razem tak wiele, choć obiektywnie prawie wcale.", hours: 550, minutes: 0, warns: 0, sex: nil, email: nil, active: 0> irb(main):009:0>
https://github.com/bangeusz/bsrp/blob/master/app/models/player.rb => Model | Dlaczego pole hasło się zmienia? Co w tym modelu jest źle?

Robisz Digest::MD5.hexdigest(self.password) poprzednio już hexdigestowanej wartości hasła

[code]ruby-1.9.2-p180-fastrequire :001 > require ‘digest’
=> true

ruby-1.9.2-p180-fastrequire :002 > Digest::MD5.hexdigest(“123”)
=> “202cb962ac59075b964b07152d234b70”

ruby-1.9.2-p180-fastrequire :003 > Digest::MD5.hexdigest(“202cb962ac59075b964b07152d234b70”)
=> “d9b1d7db4cd6e70935368a1efb10e377”[/code]
Zwykle password jest tylko wirtualnym atrybutem a zaszyfrowane trzyma się w kolumnie encrypted_password

http://railscasts.com/episodes/250-authentication-from-scratch
http://railscasts.com/episodes/16-virtual-attributes
http://railscasts.com/episodes/167-more-on-virtual-attributes

Nie wiem jak to rozwiązać :frowning:

Zrób w bazie danych pole encrypted_password i tam zapisuj hexdigest (albo jeszcze lepiej użyj bcrypta).

Dobra, zrobiłem. Ale nie ma innej opcji? Ja nie chce mieć niezakodowanych haseł użytkowników (coś takiego jak w bcrypt).

Z wielką chęcią, jedna język w którym piszę skrypt do gry nie posiada bcrypt’a.