Hello, I have a strange behavior and don't know why. If I override attributes from AcitveRecord object like below: def end_date=(date) date = date.to_date unless date.blank? write_attribute(:end_date,date) end def end_date date = read_attribute(:end_date) I18n.localize(date) if date.present? end Everything will work fine but when I try call text_field in a form_for block I get the database value and ignore end_date getter. <%= f.text_field :end_date, :class=>"date", :size=>"10" %> The text_field will be filled with 2008-12-10 (mysql date) instead of 10/12/2008 ( I18n localized) Anyone know why we get this behavior?
on 2008-12-18 02:23
on 2008-12-18 02:31
Looking inside rails code I found text_field use InstanceTag and this call before_type_cast and will return my value before turned in ruby object. What is the benefit os this behavior? I can solve my problem forcing value on text_field but I think it is ugly.
on 2008-12-18 02:50
I fix my problem with alias between attribute and attribute_before_type_cast ... I think active record do this because other kind of columns like decimals or numbers ( i'm not sure ) but it's not beautyfull when we need make alias only for make text_field behave like expected.