I’m froma Spain, and was using DATE_FORMATS to allow correct spanish
format of date values. I’m using this at environment.rb file:
ActiveSupport::CoreExtensions::Conversions::DATE_FORMATS[:default]
= ‘%d-%m-%Y’
But using serialize of attributes in ActiveRecord classes give me
problems. I have a simple model like that:
class History < ActiveRecord::Base
serialize :changes
end
Doing this:
History.create({:changes=>{:my_date=>Date.today}})
I can’t read changes attribute like an Hash object, it always return a
String object.
Digging deeper,…, I have found that the problem resides on the YAML
library and the format of Date type.
Doing this:
Date.today.to_yaml
=> “— !timestamp 05-06-2008\n”
But doing this:
YAML.load(Date.today.to_yaml)
ArgumentError: argument out of range
from /usr/lib/ruby/1.8/yaml.rb:133:in `utc’
from /usr/lib/ruby/1.8/yaml.rb:133:in `node_import’
from /usr/lib/ruby/1.8/yaml.rb:133:in `load’
from /usr/lib/ruby/1.8/yaml.rb:133:in `load’
from (irb):1
Reading the YAML Cookbook at http://yaml4r.sourceforge.net/co…
I have found that YAML needs Date to be represented by its year, month
and day in ISO8601 order.
¿Why in Rails the YAML/Serialize method don’t uses my date format?