2010-10-25 17 views
6

मैं form_for का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है कि हेल्पर्स का उपयोग करके पासवर्ड और पासवर्ड पुष्टिकरण कैसे बनाया जाए?form_for का उपयोग करते समय पासवर्ड और पुष्टि कैसे बनाएं?

मैं अब तक है:

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

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

password?? 

<% end %> 

इसके अलावा, जब/उपयोगकर्ता के लिए पोस्टिंग/कार्रवाई बनाने, मैं कैसे प्रारंभ होने से मॉडल में कुछ क्षेत्रों को रोकने का उपयोग करते समय क्या करना:

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

उत्तर

14

आपके विचार रूप में रखा इस:

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

और अपने उपयोगकर्ता मॉडल में इस:

validates_confirmation_of :password 

अब, अपने नियंत्रक में अवांछित initializations को रोकने के लिए , अपने मॉडल में निम्नलिखित जोड़ें:

attr_accessible :attribute1, attribute2 

अब ये विशेषताएं केवल एकमात्र विशेषताएं होंगी जिन्हें "जन असाइनमेंट" कहा जाता है।

+0

मेरे नियंत्रक या मेरे मॉडल में attr_accessible? – Blankman

+1

क्षमा करें, यह आपके मॉडल में "validates_confirmation_of" के साथ आता है। –

2

आप एक डेटाबेस स्तंभ password है (बेशक आप बेहतर एक नमक और एन्क्रिप्टेड पासवर्ड संग्रहीत करेंगे), तो आप ऐसा कर सकते हैं:

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 

आपके विचार में:

<%= f.password_field :password %> 
<%= f.password_field :password_confirmation %> 
संबंधित मुद्दे