2013-11-20 104 views
0

我想將變量與哈希值進行比較,但可以使用NumericString參數查詢哈希值。哈希混合值類型比較

ED_CONTRIBUTIONS = { 
    1 => { 
    db_code: 1, 
    name: 'Provision of housing and transport', 
    abbreviation: 'Provisions', 
    group: 'Social development contributions' 
    } 
} 

我使用的方法這樣做比較:

def find_item(field, value) 
    value.downcase if value.is_a? String 
    applicable_items.find { |k,v| v[field] == value}.andand.last || {} 
end 

但有時v[filed]db_code並且作爲結果的一個數字。我怎麼能這樣,如果v[field]是一個字符串,它被降低?或者更確切地說,在這種情況下,如何檢查散列值的狀態。

回答

1

您可以檢查它是否是一個字符串這樣如果是,則將其置之不理。 或者你可以只是v[field].to_s.downcase它沒有檢查變量類型。

+0

不錯,我不知道爲什麼我沒有考慮只比較轉換後的字符串。那是一個金髮碧眼的時刻 – TheLegend

1

你可以只是將其解析到一個String

value.to_s.downcase

,然後你不需要調查,如果該valueString

+0

是啊我現在要出去衝一下自己這樣一個簡單的解決方案 – TheLegend