郵便番号の値が文字列であり、おそらくデータベースにあるはずであり、YAMLに正しく変換されている場合、RubyのYAMLパーサーによって文字列に再変換されます。
require 'yaml'
zip = '01234'
文字列として扱うと、正しく変換されます。
zip.to_yaml # => "--- \"01234\"\n"
YAML.load(zip.to_yaml) # => "01234"
これを整数として扱うと、先頭0
が削除されます。これは予想どおりです。
zip.to_i.to_yaml # => "--- 1234\n"
YAML.load(zip.to_i.to_yaml) # => 1234
サンプルでは:
zipcode: 04270
zipcode
YAML整数です。「文字列性」を維持するために、引用符で囲む必要があります。
ウィキペディアのYAML記事には、データ型がどのように明確化されるかを示す良い例があります。
YAMLのすべてのインスタンスを微調整してから、zipcode
次のように解析できます。
require 'yaml'
yaml_data = '2185:
id: 3274
civility: Mr
address: CROIX DES COMBES
zipcode: 04270
'
yaml_data.gsub(/zipcode: (\d+)/, 'zipcode: "\1"')
# => "2185:\n id: 3274 \n civility: Mr \n address: CROIX DES COMBES \n zipcode: \"04270\"\n"
YAML.load(yaml_data.gsub(/zipcode: (\d+)/, 'zipcode: "\1"'))
# => {2185=>{"id"=>3274, "civility"=>"Mr", "address"=>"CROIX DES COMBES", "zipcode"=>"04270"}}