validator validate update rails length greater_than custom association ruby-on-rails-3 validation password-confirmation

ruby-on-rails-3 - update - rails validate length of string



Validadores, confirmaciĆ³n de contraseƱa (2)

Acabo de quemarme por este también. Sospecho que su valor de confirmación es nil . De los documentos:

NOTA: Esta verificación se realiza solo si la contraseña_confirmación no es nula, y por defecto solo en guardar. Para requerir confirmación, asegúrese de agregar una verificación de presencia para el atributo de confirmación:

Además, no necesita attr_accessor :password_confirmation , ya que la validación lo agrega para usted. Rieles

No puedo entender por qué el modelo no comprueba la confirmación de la contraseña, este es el código del modelo:

class User < ActiveRecord::Base attr_accessor :password_confirmation validates :email, :presence =>true, :uniqueness=>true validates :password, :presence =>true, :length => { :minimum => 5, :maximum => 40 }, :confirmation =>true validates_confirmation_of :password end

El controlador está diseñado para tomar los datos de la vista e intentar guardar, este es el código de la vista:

<h1>Registration process</h1> <%= form_for(@new_user) do |f|%> <% if @new_user.errors.any? %> <div id="errorExplanation"> <h2><%= pluralize(@new_user.errors.count, "error") %> prohibited this article from being saved:</h2> <ul> <% @new_user.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %> <%= f.label :email %><br /> <%= f.text_field :email %><br /> <%= f.label :password %><br /> <%= f.password_field :password %><br /> <%= f.label :password_confirmation %><br /> <%= f.password_field :password_confirmation %> <%#TODO Confirm password%> <%= f.submit ''Join'' %> <%end%>

No aparece ningún error si la contraseña no coincide.


Si está utilizando una asignación masiva, debe agregar una contraseña a attr_accessible . attr_accessor creará un atributo virtual pero el mismo no estará disponible para la asignación masiva. No deberíamos agregar password_confirmation a attr_accessible , validates_confirmation_of debe validar el valor de password y password_confirmation pero el valor de password_confirmation es nulo. Agregué password_confirmation a attr_accessible y funciona correctamente

Trabajar con rieles 3.