2012-06-20 61 views
6

在Sinatra中,我可以測試some_object.class.name ==「哈希」。現在,在提交之後,我必須爲此測試,再加上==「ActiveSupport :: HashWithIndifferentAccess」,以便我的代碼可以工作。爲什麼是這樣,我是否必須更新比較發生的所有地方,還是有更簡單的方法?感謝哈希類型的Rails測試

回答

15

從文檔上ActiveSupport::HashWithIndifferentAccess

這個類有可疑的語義,我們只有它使人們可以寫PARAMS [:鍵],而不是PARAMS [「關鍵」],他們得到同樣的兩個鍵的值。

因此,它是一個從Hash繼承的類,允許您傳遞符號或字符串作爲鍵並返回相同的值。

要解決(和清理)你的測試,你可以只使用下列內容:

some_object.is_a? Hash 

如果它是一個哈希或哈希的後裔,這將返回true。

+0

很好,謝謝! – dt1000