首页 > 解决方案 > 在 Ruby 中将对象转换为哈希

问题描述

在 Ruby(没有 Rails)中,是否有一种简单的方法可以将对象转换为哈希?我已经做了一些搜索,并且类似的 Rails 解决方案让 OP 尝试使用 .attributes。在普通的 Ruby 中是否有类似的东西?有宝石吗?

这些对象中的每一个都代表我在此处创建的 CSV 文件中的一行:

game_teams_data = CSV.read(location[:game_teams], headers: true, header_converters: :symbol)
    @@game_teams = game_teams_data.map do |row|

然后我以可枚举的形式访问此处的对象

@@game_teams.each do |game|
     game
end

不确定这是否会对我如何进行下面的转换产生影响。

我的对象 #<GameTeam:0x00007ffe9c97d158 @game_id="2012030154", @team_id="30", @hoa="home", @result="LOSS">

我试图实现的输出 hash = {game_id => "2012030154", team_id => "30", hoa => "home", result => "LOSS"}

标签: rubyhashrubygems

解决方案


我会to_h在类中添加一个方法GameTeam

class GameTeam
  # existing code

  def to_h
    { game_id: @game_id, team_id: @team_id, hoa: @hoa, result: @result }
  end
end

然后会像这样调用该方法:

@@game_teams.each do |game_team|
  game_team.to_h
end

推荐阅读