これは私のコードです:
def return_rider_values(pol_option, pro_endorsement, prop_coverage, *par)
rider_values
par.each do |p|
rider_values << RiderValue.find_all_by_rider_id(p)
end
rider_hash = { }
rider_values.each do |rv|
if rv.attributes["name"].downcase == "yes"
rider_hash.merge!({par[0].to_s => rv.attributes['id'].to_s})
elsif rv.attributes["position"] == pol_option.to_i && rv.attributes["rider_id"] == par[1]
rider_hash.merge!({par[1].to_s => rv.attributes["id"].to_s})
elsif rv.attributes["position"] == prop_coverage.to_i && rv.attributes["rider_id"] == par[2]
rider_hash.merge!({par[2].to_s => rv.attributes["id"].to_s})
elsif rv.attributes["position"] == pro_endorsement.to_i && rv.attributes["rider_id"] == par[3]
rider_hash.merge!({par[3].to_s => rv.attributes["id"].to_s})
end
end
rider_hash
end
出力は次のようになります。
rider_hash #=> '22' -> 58
'23' -> 61
'25' -> 66
'26' -> 68
私は期待していましたが、後で機能しないため、明らかに必要です:
rider_hash #=> '22' -> '58'
'23' -> '61'
'25' -> '66'
'26' -> '68'
プログラムの後半でルックアップ関数が ID を int ではなく文字列にしたい理由がわかりません。他の多くの方法で使用されているため、変更することはできません。
私はto_s
ハッシュキーと値の両方を持っています。to_s
Ruby 1.9ではエイリアスであることに気付きましたが、ハッシュのドキュメントでinspect
さえ、「このハッシュの内容を文字列として返す」ことになっていると書かれています。inspect or to_s
では、なぜキーだけが文字列として返されるのでしょうか?