隔离并显示散列中的特定元素

时间:2017-03-14 20:03:47

标签: ruby

我目前在编写测试时遇到问题,该测试解决了我所拥有的记录的eligibility_settings。我无法从此哈希中提取出一个特定元素。

具体来说,我想通过在不同的函数中的其他地方进行更改来测试,这会改变特定玩家的最小年龄,所以我真正想要测试的是eligibility_settings.min_age。但是我在我的测试中遇到了麻烦,将其隔离开来。

我的哈希看起来像这样

{
                    :name => "player1",
                   :label => "redTeam_1_1",
                   :group => "adult",
                    :teamId => 7,
    :eligibility_settings => {
                          "min_age" => 18,
                    "player_gender" => "female",
              "union_players_only"  => true
    }
}

然而,当我尝试循环遍历此哈希时,我无法隔离该元素。

我尝试过像

这样的事情
team.get_players.first.map do |settings, value|
  value.tap do |x, y|
    y[3]
  end
end

然而,这似乎是我一直在尝试的,而我的方法并没有做得很好。

有人会知道我能用这个做什么吗?

1 个答案:

答案 0 :(得分:0)

虽然@SergioTulentsev给出了正确的响应,但将来如果你要循环哈希,下面是迭代键并获取你想要的值的一种方法。

 hash = {
                :name => "player1",
               :label => "redTeam_1_1",
               :group => "adult",
                :teamId => 7,
  :eligibility_settings => {
                      "min_age" => 18,
                "player_gender" => "female",
          "union_players_only"  => true
   }
}

hash.map do |settings, value|
 p hash[:eligibility_settings]['min_age'] if settings == :eligibility_settings
end # output 18