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.