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.