5

मैं डेविस 3 के रिलीज उम्मीदवार का उपयोग कर रहा हूं ताकि मैं इसे रेल 4 के साथ उपयोग कर सकूं। रेल 3.2 में मैं अपने User मॉडल में एक कस्टम फ़ील्ड जोड़ने में सक्षम था बस उस क्षेत्र को पंजीकरण/edit.html.erb और पंजीकरण/new.html.erb फ़ाइलों में जोड़ना (उचित माइग्रेशन चलाने के बाद)। तो मैं मॉडल में फ़ील्ड की attr_accessible सूची में उस फ़ील्ड को जोड़ दूंगा।रेल के तहत डेविस 3 में कस्टम उपयोगकर्ता फ़ील्ड 4

हालांकि, रेल 4 में, attr_accessible सूची नहीं है और मैं केवल दृश्यों में फ़ील्ड नहीं जोड़ सकता। मैं कस्टम उपयोगकर्ता फ़ील्ड कैसे जोड़ूं?

उत्तर

7

मुझे मुख्य README on the github page and there it was में देखने के लिए कहा गया था। आसान।

DeviseController.class_eval do 
    def resource_params 
    unless params[resource_name].blank? 
     params.require(resource_name).permit(:email, :password, :password_confirmation, :remember_me) 
    end 
    end 
end 

सुनिश्चित करें कि आप rails4 शाखा (plataformatec/वसीयत) से मणि क्लोन करें:

class ApplicationController < ActionController::Base 
    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 
end 
0

आप है कि आप नए प्रारंभकर्ता बनाने के लिए की तरह की जरूरत करने के लिए attr_accessible के बजाय चिंतन करना के लिए मजबूत पैरामीटर सक्षम करने की आवश्यकता । मॉडल

+0

इस गाइड का पालन करें https: // GitHub .com/rails/strong_parameters –

9

 def configure_permitted_parameters 
     devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) } 
     devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) } 
     devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) } 
    end 

जोड़ने से attr_accesible निकालें मेरे लिए काम किया applicationcontroller करने के लिए।

+1

आपको यह भी आवश्यकता हो सकती है: 'first_action: config_permitted_parameters, यदि:: devise_controller? ' – stephenmurdoch

3

मामले में आप अपने

ApplicationController में अतिरिक्त पैरामीटर फिल्टर इससे पहले कि आप एक साधारण के साथ क्या कर सकते हैं अनुमति देने के लिए करना चाहते हैं:

class ApplicationController < ActionController::Base 
    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 
end 
मजबूत पैरामीटर विन्यास के लिए
संबंधित मुद्दे