रेल में मजबूत मापदंडों के सभी उदाहरण 4 डॉक्स का उपयोग करते हैं
params.require(:person).permit(:name, :age)
किसी को deconstruct को खुश करें और बताएं कि क्या हो रहा है के साथ कर सके requireऔर permitयहाँ?
रेल में मजबूत मापदंडों के सभी उदाहरण 4 डॉक्स का उपयोग करते हैं
params.require(:person).permit(:name, :age)
किसी को deconstruct को खुश करें और बताएं कि क्या हो रहा है के साथ कर सके requireऔर permitयहाँ?
जवाबों:
paramsएक हैश की तरह एक नियंत्रक दिखता में, लेकिन यह वास्तव का एक उदाहरण है ActionController::Parameters, जो इस तरह के रूप में कई तरीके प्रदान requireऔर permit।
requireविधि सुनिश्चित एक विशिष्ट पैरामीटर मौजूद है, और अगर यह प्रदान नहीं कर रहा है, कि requireविधि एक त्रुटि फेंकता है। यह ActionController::Parametersकुंजी में पारित के लिए एक उदाहरण देता है require।
permitविधि मानकों ऑब्जेक्ट की प्रति देता है, केवल लौटने की अनुमति दी कुंजी और मूल्यों। एक नया ActiveRecord मॉडल बनाते समय, केवल अनुमत विशेषताओं को मॉडल में पारित किया जाता है।
यह बहुत हद तक सफेदी की तरह दिखता है जिसे पहले ActiveRecord मॉडल में शामिल किया गया था, लेकिन यह नियंत्रक के लिए अधिक समझ में आता है।
trueकरने के लिए permitted?विधि। डिफ़ॉल्ट रूप से, का एक उदाहरण ActionController::Parametersवर्ग वापस आ जाएगी falseके लिए permitted?जवाब trueकरने के लिए permitted?साधन पैरामीटर वस्तु जन काम में इस्तेमाल किया जा सकता है; और एप्लिकेशन फॉरबिडेंट एट्रिब्यूट्स त्रुटि को फेंक देगा।
permitपर requireयह भी की अनुमति और लौट आए वस्तु में आवश्यक पैरामीटर शामिल?
अधिक सटीक होने के लिए, जब आप उदाहरण के लिए बनाते हैं। करने से .new(...), :personआवश्यकता से संकेतित हैश होना चाहिए और व्यक्ति हैश केवल परमिट द्वारा स्वीकार :nameऔर :ageसंकेत देगा ।
उदाहरण:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay, other not permitted
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay, full_name not permitted
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person
not okayउदाहरण क्या कल्पना करते हैं?
permitलेकिन नहींrequire।