Vous échouez ici à la validation, c’est pourquoi.
par exemple, le mot de passe est trop court.
Vous pouvez faire remonter l’exception en faisant ceci :
u.save!
ce qui donne, par exemple :
ActiveRecord::RecordInvalid: Validation failed: Password is too short (minimum is 10 characters)
from /home/robert/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/validations.rb:80:in `raise_validation_error'
Un moyen plus rapide d’y parvenir aurait été d’ajouter un point d’exclamation après le create :
u = User.create!(username: "dunderhead", email: "dunderhead@live.com", password: "password")
Un ID ne sera pas attribué tant que vous n’aurez pas donné à l’objet des attributs entièrement valides, soit lors de la création, soit lors de la sauvegarde après les avoir corrigés.
Ce n’est que lorsque vous avez un objet instancié que vous pouvez exécuter des méthodes sur celui-ci.