1. ホーム
  2. ruby

[解決済み] Rubyでオブジェクトをハッシュに変換する

2022-05-12 23:02:49

質問

例えば、私が Gift オブジェクトがあり @name = "book" &です。 @price = 15.95 . これをHashに変換するにはどうしたらよいでしょうか。 {name: "book", price: 15.95} をRailsではなくRubyで変換する最適な方法は何でしょうか?

どのように解決するのですか?

class Gift
  def initialize
    @name = "book"
    @price = 15.95
  end
end

gift = Gift.new
hash = {}
gift.instance_variables.each {|var| hash[var.to_s.delete("@")] = gift.instance_variable_get(var) }
p hash # => {"name"=>"book", "price"=>15.95}

あるいは each_with_object :

gift = Gift.new
hash = gift.instance_variables.each_with_object({}) { |var, hash| hash[var.to_s.delete("@")] = gift.instance_variable_get(var) }
p hash # => {"name"=>"book", "price"=>15.95}