초기화 된 Ruby 객체에 대해 메소드를 동적으로 정의하려고합니다. MyObject
해시를 기반으로합니다. initialize
메소드로 전달합니다.Ruby - obj의 고유 클래스와 로컬 변수를 공유합니다.
my_hash.each do |key|
class << self
define_method(key.underscore.to_sym) do
my_hash[key]
end
end
end
이것은 undefined local variable or method 'key' for #<Class:#<MyObject:0x007fc7abw0cra0>>
실패 다음 initialize
방법의 몸에서 나는 다음 있습니다. 어떤 아이디어?
my_hash
은 camelized 키가 많은 json 응답으로 만들어 졌으므로 원하는 값을 얻기 위해 간단한 루비 메서드를 사용하는 것이 더 편리합니다.
해시를 OpenStruct로 변환하면 각 키에 대한 메서드가 만들어집니다. – emaillenin
하지만 MyObject 개체에서 사용할 수있는 메서드를 만들지 못합니까? 내가 어떻게 든 method_missing을 재정 의하여 OpenStruct 객체에 호출을 전달하지 않는다면 말입니다. –