Hi there I''ve come across an interesting scenario with validates_presence_of and Dates in Rails. I''ve been looking through the Rails code but I just can''t figure out where in Rails the date parsing which presumably causes this issue is happening. The problem is this. If you try and create a model using a date string in the format "dd MMM yy" but you specify a year of ''00'', ''validates_presence_of'' fails because the Date object Rails converts the String to is nil. If you specify any other 2-digit year it''s fine. Here''s a simple example test case: class Model validates_presence_of :dated_on end # this works m = Model.create(:dated_on => ''20 Apr 01'') assert m.errors.empty? # this fails m = Model.create(:dated_on => ''20 Apr 00'') assert m.errors.empty? Has anyone come across this before and/or would anyone be able to point me to where in the Rails code base the date is parsed so I can look at implementing a workaround? I just can''t spot it! Many thanks Olly --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Craig Demyanovich
2008-Apr-25 14:54 UTC
Re: validates_presence_of Date with ''00'' year fails
Ultimately, the parsing of a date comes down to the new_date method in activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb. It''s currently on line 166 of that file in edge Rails. That method returns nil if the year is 0. I don''t know why it works that way, but at least you now know why you see the behavior that you do. Regards, Craig --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---