Changing Rails Default Date Parse Option

Does anyone know how to change the default option for the Date.parse
(which ActiveRecord is using on all date fields). I would like the
“comp” option to default to true so I don’t have to account for 2-
digit dates throughout my application.

http://corelib.rubyonrails.org/classes/Date.html#M001228

Thanks!
Tom

On 17 May 2011 17:11, TomRossi7 [email protected] wrote:

Does anyone know how to change the default option for the Date.parse
(which ActiveRecord is using on all date fields). I would like the
“comp” option to default to true so I don’t have to account for 2-
digit dates throughout my application.

http://corelib.rubyonrails.org/classes/Date.html#M001228

Do you mean you are giving ActiveRecord a string and expecting it to
parse it into a Date as it writes it to the database? If so that is
generally very dangerous. It is much better to parse it yourself into
a Date so that you can be sure you are interpreting the input
correctly, and can cope with parse errors. Then pass the Date to
ActiveRecord. Or perhaps I am misunderstanding what you are doing.

Colin

ActiveRecord, by default, parses strings using the Date.parse method.
I’m
trying to figure out how to tell it to use the comp=true option so it
will
parse two-digit years more logically. Currently, the default is false
which
allows you to say person.birthday= ‘10/29/75’ and it parses that as
October
29th of the year 0075.

On Tuesday, May 17, 2011 3:51:38 PM UTC-4, Colin L. wrote:

parse it into a Date as it writes it to the database? If so that is
generally very dangerous. It is much better to parse it yourself into
a Date so that you can be sure you are interpreting the input
correctly, and can cope with parse errors. Then pass the Date to
ActiveRecord. Or perhaps I am misunderstanding what you are doing.

ActiveRecord typically does a great job in typecasting, handling
exceptions,
and validation so I’m not sure what you mean. Though, this is probably
a
different discussion altogether since my original question was just how
to
tweak the options for the current parsing that ActiveRecord is already
doing.

What does it matter where the data comes from? ActiveRecord parses it
the
same? If you don’t know, or if it isn’t possible, thats fine, but I
don’t
want to overcomplicate the question.

On 17 May 2011 20:57, TomRossi7 [email protected] wrote:

ActiveRecord, by default, parses strings using the Date.parse method. I’m
trying to figure out how to tell it to use the comp=true option so it will
parse two-digit years more logically. Currently, the default is false which
allows you to say person.birthday= ‘10/29/75’ and it parses that as October
29th of the year 0075.

Is the above in reply to my questions or are you just asking the same
question again? If it is in reply to my post then try again, quoting
my reply and answering the questions.

Another question, where are the date strings coming from? User input?

Don’t forget to answer the questions in the first post though.

Colin

Have you considered using the Chronic gem?

I don’t know how to do what you’re asking but have recently implement
Chronic to “make date parsing more sane.” (Actual verbiage from my
assigned task.)

It’s quite a handy gem, you might consider implementing it.

http://chronic.rubyforge.org/

On Tue, May 17, 2011 at 4:54 PM, Colin L. [email protected]
wrote:

http://corelib.rubyonrails.org/classes/Date.html#M001228

Do you mean you are giving ActiveRecord a string and expecting it to
parse it into a Date as it writes it to the database?

I am still not sure I understand the question - is the answer to the
above question ‘yes’?

The answer is whenever ActiveRecord parses the string. In Rails 3, its
when
you call the setter.

different discussion altogether since my original question was just how
to
tweak the options for the current parsing that ActiveRecord is already
doing.

I was just trying to point out that there may be a better way, for
example how do you know whether whether ‘10/2/05’ is 2nd October or
10th February? It is generally not a good idea to allow dates to be
entered for strings. One man’s date is another man’s exception.

Yeah, in general I agree with you. For my application, Its working
great
now, except for when a user uses a 2-digit year.

On 17 May 2011 21:37, TomRossi7 [email protected] wrote:

http://corelib.rubyonrails.org/classes/Date.html#M001228

Do you mean you are giving ActiveRecord a string and expecting it to
parse it into a Date as it writes it to the database?

I am still not sure I understand the question - is the answer to the
above question ‘yes’?

doing.
I was just trying to point out that there may be a better way, for
example how do you know whether whether ‘10/2/05’ is 2nd October or
10th February? It is generally not a good idea to allow dates to be
entered for strings. One man’s date is another man’s exception.

Colin

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs