
If you read my previous post on natural language date & time parsing for ActiveRecord and tried it on Rails 2.1 or later, you may have noticed it works fine for dates, but not dates with times.
As part of the time zones feature introduced in Rails 2.1, changes were made to how ActiveRecord parses date/time columns during attribute assignment. The overridden method I showed in my previous post is never called, and Chronic doesn’t get a chance to parse the string.
For Rails 2.1 and later, instead you need to provide a new version of ActiveSupport::TimeZone#parse:
class ActiveSupport::TimeZone def parse_with_chronic(string) time = parse_without_chronic(string) if time.nil? time = Chronic.parse(string, :now => self.now) time = self.local(time.year, time.month, time.day, time.hour, time.min, time.sec) end time end alias_method_chain :parse, :chronic end
Was this post useful? Recommend Steve on Working With Rails.
You can leave a response, or trackback from your own site.
Contact us: info (at) lightyearsoftware.com | Press
Copyright © 2007-2010 Light Year Software, LLC. All rights reserved.