2010-10-25 21 views
6

Estoy usando form_for, pero no estoy seguro de cómo crear la contraseña y la contraseña de confirmación con los ayudantes?Cómo crear una contraseña y confirmación cuando se usa form_for?

que tengo hasta ahora:

<%= form_for :user, @user, .... do |f| %> 

<%= f.text_field :user_name, :class .... %> 

password?? 

<% end %> 

Además, al publicar en el directorio/usuario/crear la acción, cómo puedo evitar que ciertos campos en el modelo de ser inicializado cuando se utiliza:

@user = User.new(params[:user]) 

Respuesta

14

poner esto en su opinión de la forma:

<%= f.password_field :password %> 
<%= f.password_field :password_confirmation %> 

Y esto en su modelo de usuario:

validates_confirmation_of :password 

Ahora, para evitar que las inicializaciones no deseados en su controlador , agregue lo siguiente a su modelo:

attr_accessible :attribute1, attribute2 

Ahora estos atributos serán los únicos atributos que se pueden establecer a través de lo que se denomina "asignación masiva".

+0

attr_accessible en mi controlador o mi modelo? – Blankman

+1

Lo siento, eso va en su modelo, junto con "validates_confirmation_of". –

2

Si usted tiene una base de datos de la columna password (por supuesto en que almacena mejor una sal y contraseña encriptada), entonces se podría hacer esto:

class User 
    attr_accessor :password_confirmation # Note. You do not need this field in database, it's for 1-time use 

    # The following 2 lines let you prevent certain fields 
    attr_accessible :user_name 
    attr_protected :password 
    # Note that if you used attr_accessible, and all other fields cannot be assigned through User.new(params[:user[), while if you used attr_protected, only those fields cannot assigned. 

validates_confirmation_of :password # This automatically validates if :password == :password_confirmation 

En su opinión:

<%= f.password_field :password %> 
<%= f.password_field :password_confirmation %> 
Cuestiones relacionadas