这是我的代码:
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 是字符串而不是整数。我只知道它确实如此,而且我无法更改它,因为许多其他方法都在使用它。
我有to_s
哈希键和值。我意识到在 Ruby 1.9to_s
中是一个别名,inspect
但即使在Hash文档中它也说,inspect or to_s
应该“将此哈希的内容作为字符串返回”。
那么为什么只有键作为字符串返回呢?