Ho giocato con has_secure_password e ho avuto un problema. Il mio test per l'azione di creazione nel mio UsersController non era
funzionante al passaggio
. Così ho iniziato a giocare sulla console e mi sono reso conto che la password non veniva convertita in un ha e salvata nel campo password_digest.Rails 3.1.1 has_secure_password digest non può essere vuoto
Quando provo a creare un utente dalla console succede quanto segue.
irb(main):031:0> u = User.new(:email => "[email protected]", :password => "test", :password_confirmation => "test")
=> #<User id: nil, email: "[email protected]", password_digest: nil, created_at: nil, updated_at: nil>
irb(main):032:0> u.save
=> false
irb(main):033:0> u.errors
=> #<ActiveModel::Errors:0x00000100cde500 @base=#<User id: nil, email: "[email protected]", password_digest: nil, created_at: nil, updated_at: nil>, @messages={:password_digest=>["can't be blank"]}>
Non sono sicuro di cosa sto facendo male. Sembra che l'attributo password_digest non venga mai assegnato. Se creo un oggetto utente senza attributi e assegno singolarmente ciascun attributo, ottengo lo stesso errore.
Ecco il mio modello
class User < ActiveRecord::Base
has_secure_password
attr_accessible :email, :password, :password_confirmation
end
Grazie per l'aiuto in anticipo.
Alex Shenoy