2

メソッドに渡すMyObjectハッシュに基づいて、初期化された Ruby オブジェクトのメソッドを動的に定義しようとしています。メソッドの本体には、次のものがあります。my_hashinitializeinitialize

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>>。理由はありますか?

my_hash、多数のラクダ化されたキーを含む json 応答から作成されるため、必要な値を取得するための単純な Ruby メソッドを使用する方が便利です。

4

2 に答える 2