5
나는여러 인스턴스 변수를 루비로 해시로 변환하는 더 나은 방법은?
#<Response:0x000... @first = "Charlie", @last=Kelly, ....
의 형식으로 응답을 받고 있어요 나는 (활성 상인을위한) 해시이 점을 설정해야합니다. 현재 내가 변수를 통해 반복하고이 일을하고있다 :
이 작동response.instance_variables.each do |r|
my_hash.merge!(r.to_s.delete("@").intern => response.instance_eval(r.to_s.delete("@")))
end
, 그것은 {:first = "charlie", :last => "kelly"}
를 생성합니다,하지만 조금 해키 불안정 보인다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
편집 : 방금 방정식의 두 번째 부분에 instance_variable_get을 사용할 수 있다는 것을 알았지 만 여전히 주요 문제를 남깁니다.
문자열 대신에 첫 번째 값을 강제로 사용할 수있는 방법이 있습니까? 이 코드를받는 코드를 만질 수없고 문자열이 작동하지 않습니다. – cbron
확실히,'.symbolize_keys' :'obj.instance_values.symbolize_keys'가 여러분을 가야합니다! –
Aww 완벽한 남자. 나는 instance_values 메소드를 다시 작성하기 시작했으나 이것은 쉬운 방법이다. 그레지. – cbron