मैं चाहते हैं पता करने के लिए इस रत्न के दोनों एकीकृत करने की विधि (वसीयत + मजबूत पैरामीटर), के बाद से मजबूत पैरामीटर संभावना 4.0वसीयत और मजबूत पैरामीटर
में रेल कोर में जोड़ दिया जाएगा किसी भी मदद का स्वागत करते धन्यवाद
हैमैं चाहते हैं पता करने के लिए इस रत्न के दोनों एकीकृत करने की विधि (वसीयत + मजबूत पैरामीटर), के बाद से मजबूत पैरामीटर संभावना 4.0वसीयत और मजबूत पैरामीटर
में रेल कोर में जोड़ दिया जाएगा किसी भी मदद का स्वागत करते धन्यवाद
हैवसीयत 4.x
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
के लिए अद्यतन दोनों जवाहरात जोड़ने के बाद, वसीयत सामान्य रूप में काम करेंगे।
अद्यतन: devise#strong-parameters पर वर्णित अनुसार, Devise 3.x के नवीनतम संस्करण के साथ, प्रमाणीकरण कुंजी (आमतौर पर ईमेल फ़ील्ड), और पासवर्ड फ़ील्ड पहले से ही अनुमति है। हालांकि, अगर साइनअप फॉर्म पर कोई अतिरिक्त फ़ील्ड हैं, तो आपको अनुमति देने के लिए अतिरिक्त फ़ील्ड को डिवीज को जाने की आवश्यकता होगी।
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
वसीयत 2.x के लिए, यदि आप स्पष्ट रूप से की आवश्यकता होती है उपयोगकर्ता मॉडल में दागी मापदंडों श्वेत सूची बनाती सुरक्षा सुविधा का उपयोग:
include ActiveModel::ForbiddenAttributesProtection
परिवर्तन की आवश्यकता यह करने के लिए सबसे आसान तरीका है एक फिल्टर के साथ है https://gist.github.com/3350730 पर पाए जाते हैं जो कुछ नियंत्रकों को ओवरराइड करते हैं।
आपके एप्लिकेशन नियंत्रक में फ़िल्टर से पहले एक सरल जोड़ने का आसान तरीका है। आप अलग-अलग भूमिकाओं और/या अन्य अधिक जटिल परिदृश्य तेज है, तो नीचे दिए गए लिंक पर अन्य विकल्प हैं:
before_filter :configure_sanitized_params, if: :devise_controller?
def configure_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:firstname, :designation_id ,:middlename, :previous_experiance_year,:previous_experiance_month,:lastname, :email, :username, :password, :password_confirmation, :previous_experiance,:empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone,:deactivated_date,:image)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:remove_image,:firstname, :designation_id ,:middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date,:image)}
end
कॉपी और यह भी बजाय अपने आवेदन नियंत्रक के लिए इस कोड को पेस्ट,: firstname, और अन्य फ़ील्ड, आपको अपने फ़ील्ड जोड़ना होगा।
हाँ का उपयोग करने की आवश्यकता है, यह करने का यह नया तरीका है। सवाल उस दिन वापस पूछा गया था जब देवता ने अपने कोड पर मजबूत पैरामीटर लागू नहीं किए थे। –
अगला उत्तर मेरे विचार से बेहतर है, क्योंकि यह डेविस सार्वजनिक एपीआई – msa7
पर रिले है क्योंकि ऐसा इसलिए होगा क्योंकि मेरा जवाब एक साल पहले से था। मैंने नए विकास के आधार पर उत्तर अपडेट किया है। – ronalchn
यह प्रश्न दुनिया का कितना छोटा है इसका एक आदर्श उदाहरण है, आपने मेरे प्रश्न का उत्तर मेरे अपने गिस्ट = डी –