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

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.

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

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.

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.

> 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?

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

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.

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

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/

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?

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.

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.

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.