We have to work with a legacy database that stores its date and time columns as [decimal](9,0).
By way of examples:
The date January 24, 1981 is stored as the number 19810124.0. The time 12:34PM and 56.78 seconds is stored as the number 12345678.0.
This gem allows you to store and retrieve values from such columns as Date objects.
Add it to your Gemfile:
gem 'activerecord-decimal-datetime-adapter'
By default, it will "just work"™ for all subclasses of ActiveRecord::Base. It will treat all numeric columns with names ending in 'date' or 'time' (case-insensitive) as dates or times, respectively.
If you want to exclude columns, you can add them to one of the class variables:
class User < ActiveRecord::Base
self.skip_decimal_date_attributes = [ :ignore_date ]
self.skip_decimal_time_attributes = [ :ignore_time ]
end
If you want to include columns that don't fit the naming conventions, you can add them to one of the class variables:
class User < ActiveRecord::Base
self.extra_decimal_date_attributes = [ :misnamed_thing ]
self.extra_decimal_time_attributes = [ :misnamed_thing ]
end
If you want to disable the conversions by default, you can set the class variables:
class UnconvertedThing < ActiveRecord::Base
self.decimal_date_attributes = false
self.decimal_time_attributes = false
end