Sha256: 5488fe89a58e5482999c1fc7a2d02e3cb99e75f1cbd7c27393a24d95ca67e7e4
Contents?: true
Size: 1.35 KB
Versions: 12
Compression:
Stored size: 1.35 KB
Contents
module PopulateMe module DocumentMixins module Typecasting # This module deals with typecasting the fields # when they are received as strings, # generally from a form or a csv file def typecast k, v unless self.class.fields.key?(k) return WebUtils.automatic_typecast(v) end f = self.class.fields[k].dup meth = "typecast_#{f[:type]}".to_sym unless respond_to? meth return WebUtils.automatic_typecast(v, [f[:type],:nil]) end __send__ meth, k, v end def typecast_integer k, v v.to_i end def typecast_price k, v return nil if WebUtils.blank?(v) WebUtils.parse_price(v) end def typecast_date k, v if v[/\d\d(\/|-)\d\d(\/|-)\d\d\d\d/] Date.parse v else nil end end def typecast_datetime k, v if v[/\d\d(\/|-)\d\d(\/|-)\d\d\d\d \d\d?:\d\d?:\d\d?/] d,m,y,h,min,s = v.split(/[-:\s\/]/) Time.utc(y,m,d,h,min,s) else nil end end def typecast_attachment k, v attached = self.attachment k if WebUtils.blank? v attached.delete_all return nil elsif v.is_a?(Hash)&&v.key?(:tempfile) return attached.create v end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems