私はこのように構造化されたハッシュの配列を持っています
[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
特定の価格にアクセスするにはどうすればよいpayer_idですか? この質問は基本的なことですが、わかりません。
私はこのように構造化されたハッシュの配列を持っています
[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
特定の価格にアクセスするにはどうすればよいpayer_idですか? この質問は基本的なことですが、わかりません。
あなたはこれを行うことができます
payers = [{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
payer_id = 2
payers.detect { |payer| payer[:payer_id] == payer_id }.try(:[], :price)
# => 30
以前detectは、id に一致する最初の支払人を取得してから、その価格を取得していました。支払人が一致しなかった場合は、nil返されたのでtry、価格を取得するために使用できるため、支払人が見つからなくてもコードでエラーが発生しません。
※tryは ActiveSupport の一部ですので、使用しない場合は に置き換え.try(:[], :price)て[:price]ください。