Sha256: d05f59867edc2876f60e22fd7f9dd95b6250ce761e46a99d09a08977f5e6613d

Contents?: true

Size: 958 Bytes

Versions: 1

Compression:

Stored size: 958 Bytes

Contents

module Mongoid
  module Friendly
    module Timestamps
      extend ActiveSupport::Concern
      
      module ClassMethods
        def friendly_timestamp(raw_name, friendly_name)        
          update_friendly_field_method_name = "update_friendly_timestamp_field_#{friendly_name}"
              
          define_method update_friendly_field_method_name do
            self[friendly_name] = Time.at(self[raw_name]).strftime '%d-%b-%Y %H:%M:%S.%N'
          end
              
          define_method "#{raw_name}=" do |value|
            utc = value.utc
            self[raw_name] = utc.to_f
            self.send update_friendly_field_method_name
          end
              
          self.class_eval do
            field raw_name, :type => Float
            field friendly_name, :type => String
                
            before_validation { self.send(update_friendly_field_method_name) }
          end
        end
      end      
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-friendly-timestamps-0.0.1 lib/mongoid-friendly-timestamps.rb