哈希混合值类型比较

时间:2013-11-20 11:27:49

标签: ruby-on-rails ruby hash

我正在尝试将变量与散列中的值进行比较,但可以使用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]是一个字符串,它会被降级?或者更确切地说,如何在这样的实例中检查哈希值的状态。

2 个答案:

答案 0 :(得分:1)

您只需将其解析为String

即可

value.to_s.downcase

然后您无需调查value是否为String

答案 1 :(得分:1)

您可以检查它是否是一个像v[field].kind_of? String这样的字符串,如果是,则将其缩小。 或者你可以v[field].to_s.downcase而不检查变量类型。