8768 sujets

Développement web côté serveur, CMS

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:
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