Bonjour,
je développe un petit système d'authentification avec rails. J'utilise la méthode has_secure_password pour le laisser s'occuper de la génération de l'empreinte du mot de passe.
Ma table User a (entre autre) un attribut password_digest, voilà le modèle:
La vue pour l'inscription contient ce formulaire:
Et voilà mon contrôleur:
À la validation, rails retourne systématiquement l'erreur "Password can't be blank" alors que j'ai bien mes accesseurs, et la méthode has_secure_password.
Avez-vous une idée d'où provient le problème ?
Merci de votre aide
je développe un petit système d'authentification avec rails. J'utilise la méthode has_secure_password pour le laisser s'occuper de la génération de l'empreinte du mot de passe.
Ma table User a (entre autre) un attribut password_digest, voilà le modèle:
class User < ActiveRecord::Base
has_secure_password
attr_accessor [langue]assword, [langue]assword_confirmation
EMAIL = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
USERNAME = /\A[a-z0-9_]+\z/i
validates :email, presence: true
validates :email, format: EMAIL, if: :email?
validates :email, uniqueness: true, if: :email?
validates :username, presence: true
validates :username, uniqueness: true, if: :username?
validates :username, format: USERNAME, if: :username?
validates :firstname, presence: true
validates :lastname, presence: true
validates [langue]assword, confirmation: true, if: [langue]assword
validates [langue]assword, length: { minimum: 8 }, if: [langue]assword
end
La vue pour l'inscription contient ce formulaire:
<%= form_for @user, url: action_name = 'new' ? new_user_path : edit_user_path do |f| %>
<% if @user.errors.any? %>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
<div>
<%= f.label :email, 'Adresse email' %>
<%= f.email_field :email %>
</div>
<div>
<%= f.label :username, 'Nom d\'utilisateur' %>
<%= f.text_field :username %>
</div>
<div>
<%= f.label :firstname, 'Prénom' %>
<%= f.text_field :firstname %>
</div>
<div>
<%= f.label :lastname, 'Nom de famille' %>
<%= f.text_field :lastname %>
</div>
<div>
<%= f.label [langue]assword, 'Mot de passe' %>
<%= f.password_field [langue]assword %>
</div>
<div>
<%= f.label [langue]assword_confirmation, 'Confirmation' %>
<%= f.password_field [langue]assword_confirmation %>
</div>
<%= f.submit 'Inscription' %>
<% end %>
Et voilà mon contrôleur:
class UsersController < ApplicationController
before_action :set_user, only: [:create]
def new
@user = User.new
end
def create
if @user.save
flash[:notice] = 'Vous avez reçu un mail de validation'
redirect_to '/'
else
flash[:error] = 'Le formulaire contient des erreurs'
render :new
end
end
protected
def set_user
@user = User.new(user_params)
end
def user_params
params.require(:user).permit(:email, :username, :firstname, :lastname, [langue]assword, [langue]assword_confirmation)
end
end
À la validation, rails retourne systématiquement l'erreur "Password can't be blank" alors que j'ai bien mes accesseurs, et la méthode has_secure_password.
Avez-vous une idée d'où provient le problème ?
Merci de votre aide