2013-11-20 4 views
0

변수를 해시 값과 비교하려고 시도하지만 해시는 NumericString 인수를 사용하여 쿼리 할 수 ​​있습니다.해시 혼합 값 형식 비교

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 그 결과 숫자입니다 :

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

나는 비교를 수행하기 위해이 같은 방법을 사용합니다. 어떻게하면 그렇게 만들 수 있습니다 v[field] downcased 수있는 문자열입니까? 또는 오히려 그러한 인스턴스에서 해쉬 값의 상태를 어떻게 체크 할 것인가.

답변

1

이 문자열은 다음과 같이 있다면 당신은 확인하실 수 있습니다 v[field].kind_of? String, 해당하는 경우 소문자로 입력하십시오. 변수 유형을 확인하지 않고 그냥 v[field].to_s.downcase 수 있습니다.

+0

왜 나는 변환 된 문자열을 비교하는 것에 대해 생각하지 못하는지 잘 모릅니다. 금발의 순간이었던 남자 – TheLegend

1

넌 그냥 String에 구문 분석 할 수 있습니다 :

value.to_s.downcase

을 한 다음은 value 경우 조사 할 필요가없는 String

+0

예 저는 지금 나가서 그런 간단한 해결책을 두 드릴 것입니다. – TheLegend