2017-03-14 5 views
0

現在、私が持っているレコードのeligibility_settingsを解決するテストを書くのに問題があります。私はこのハッシュから特定の要素の1つを取り出すのに問題があります。ハッシュ内の特定の要素を切り離して表示する

具体的には、特定のプレーヤーの最小年齢を変更する別の場所で変更を加えることでテストしたいので、実際にテストしようとしているのは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 
    } 
} 

のように見えます。しかし、私はトラブルは、1つの要素を分離が生じています。

それは私がしようとしてきたもののように思えるが、私は

team.get_players.first.map do |settings, value| 
    value.tap do |x, y| 
    y[3] 
    end 
end 

のようなものを試してみた、と私のアプローチは非常に適切で働いていません。

私はこれで何ができるのでしょうか?

+1

huh?なぜあなたは何を言っているのですか?ただ値を直接取得してください。ハッシュ[:eligibility_settings] ['min_age'] '(あなたのハッシュのようなものに基づいて) –

+0

私は私が1つ、あなたは絶対に正しいと思ってwaaayのように感じる。どうもありがとうございます! – kdweber89

答えて

0

@SergioTulentsevは適切な応答を返しましたが、将来ハッシュをループする場合は、以下のようにキーを繰り返して必要な値を取得する方法の1つです。

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 
関連する問題