आप निम्न कार्य भी कर सकते हैं:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
मैं उपरोक्त समाधान का उपयोग करता हूं जब मैं अधिक से अधिक एक या दो पैरेम्स की जांच करना चाहता हूं।
.values_at रिटर्न और किसी भी अपरिभाषित परम की जगह में शून्य के साथ सरणी। अर्थात:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
निम्नलिखित वापस करेंगे:
[3,nil,5]
.includes? (nil) तब किसी भी शून्य मान के लिए सरणी की जाँच करता है। यह सच है कि सरणी में शून्य शामिल है।
कुछ मामलों में आप यह भी जांचना चाह सकते हैं कि परमेस में नहीं है और गलत मूल्य पर खाली स्ट्रिंग है।
आप उन मानों को संभाल सकते हैं जब तक कि कथन के ऊपर निम्न कोड नहीं जोड़ा जाता।
params.delete_if{|key,value| value.blank?}
सभी एक साथ इस तरह दिखेंगे:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
यह ध्यान रखना महत्वपूर्ण है कि delete_if आपके हैश / परम को संशोधित करेगा, इसलिए सावधानी के साथ उपयोग करें।
उपरोक्त समाधान स्पष्ट रूप से सेट करने के लिए थोड़ा अधिक काम करता है, लेकिन इसके लायक है यदि आप अधिक जाँच कर रहे हैं तो बस एक या दो पैरेम्स।
params
एक रेल नियंत्रक विधि है (जो एक HashWithIndifferentAccess को वापस करने के लिए होती है), यह रेल के बारे में है।