我正在尝试将变量与散列中的值进行比较,但可以使用Numeric
和String
参数查询散列。
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]
是一个字符串,它会被降级?或者更确切地说,如何在这样的实例中检查哈希值的状态。
答案 0 :(得分:1)
您只需将其解析为String
:
value.to_s.downcase
然后您无需调查value
是否为String
答案 1 :(得分:1)
您可以检查它是否是一个像v[field].kind_of? String
这样的字符串,如果是,则将其缩小。
或者你可以v[field].to_s.downcase
而不检查变量类型。