2010-10-25 17 views
6

Używam form_for, ale nie jestem pewien, jak utworzyć hasło i potwierdzenie hasła za pomocą pomocników?Jak utworzyć hasło i potwierdzenie przy użyciu form_for?

mam tak daleko:

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

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

password?? 

<% end %> 

Również podczas księgowania do/user/tworzyć działania, w jaki sposób mogę zapobiec niektórych pól w modelu przed zainicjowany przy użyciu:

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

Odpowiedz

14

umieścić to w formularzu Widok:

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

I to w modelu użytkownika:

validates_confirmation_of :password 

Teraz, aby zapobiec niepożądanym inicjacji w kontrolerze Dodaj do swojego modelu:

attr_accessible :attribute1, attribute2 

Teraz te atrybuty będą jedynymi atrybutami, które można ustawić za pomocą tak zwanego "przypisania masy".

+0

attr_accessible w moim kontrolerze lub moim modelu? – Blankman

+1

Przepraszam, że to jest w twoim modelu, wraz z "validates_confirmation_of". –

2

Jeśli masz kolumnę bazy danych password (oczywiście lepiej przechowywać sól i zaszyfrowane hasło), możesz to zrobić:

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 

W widoku:

<%= f.password_field :password %> 
<%= f.password_field :password_confirmation %> 
Powiązane problemy