2013-11-20 131 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