2012-06-20 13 views
6

सिनात्रा में रेल परीक्षण, मैं some_object.class.name == "हैश" के लिए परीक्षण कर सकता हूं। अब, सबमिट करने के बाद, मुझे अपने कोड के काम के लिए, इसके लिए परीक्षण करना होगा, प्लस == "एक्टिव सपोर्ट :: हैशविथ इंडिफेंडरएप"। ऐसा क्यों है, और क्या मुझे उन सभी स्थानों को अपडेट करना होगा जहां तुलना की जाती है, या क्या कोई आसान तरीका है? धन्यवादहैश प्रकार

उत्तर

15
ActiveSupport::HashWithIndifferentAccess पर डॉक्स से

:

इस वर्ग संदिग्ध अर्थ विज्ञान है और हम केवल यह है, ताकि लोगों को परम लिख सकते हैं [: कुंजी] के बजाय पैरामीटर [ 'कुंजी'] और वे एक ही मिलता है दोनों चाबियों के लिए मूल्य।

तो, यह एक वर्ग है जो हैश से विरासत में है जिससे आप प्रतीक के रूप में प्रतीक या स्ट्रिंग पास कर सकते हैं और उसी मान को वापस कर सकते हैं।

ठीक करने के लिए (और साफ) अपने परीक्षण, तो आप सिर्फ निम्नलिखित इस्तेमाल कर सकते हैं:

some_object.is_a? Hash 

यह सच वापस आ जाएगी अगर यह एक हैश या हैश का वंशज है।

+0

बहुत अच्छा काम करता है, धन्यवाद! – dt1000

संबंधित मुद्दे