module SplitDateTime::Splitter::ClassMethods
Public Instance Methods
define_concatenation_callback(field, prefix)
click to toggle source
# File lib/split_date_time/splitter.rb, line 61 def define_concatenation_callback(field, prefix) if self.kind_of? ActiveRecord::Base before_validation :"concatenate_#{field}", if: :"#{field}_modified?" end define_method :"concatenate_#{field}" do time_variable = instance_variable_get(:"@#{Naming.time_getter(field, prefix)}") time_variable ||= send("#{Naming.time_getter(field, prefix)}") date_variable = instance_variable_get(:"@#{Naming.date_getter(field, prefix)}") date_variable ||= send("#{Naming.date_getter(field, prefix)}") self.send "#{field}=", DateTime.parse("#{date_variable} #{time_variable}") end define_method :"#{field}_modified?" do time_variable = instance_variable_get(:"@#{Naming.time_getter(field, prefix)}") date_variable = instance_variable_get(:"@#{Naming.date_getter(field, prefix)}") time_variable.present? || date_variable.present? end end
define_split_accessors(field, prefix = nil, date_format = nil, time_format = nil)
click to toggle source
# File lib/split_date_time/splitter.rb, line 41 def define_split_accessors(field, prefix = nil, date_format = nil, time_format = nil) time_format ||= '%H:%M' date_format ||= '%m/%d/%Y' define_method Naming.time_getter(field, prefix) do field_val = send(field) field_val.strftime(time_format) if field_val.present? end define_method Naming.time_setter(field, prefix) do |val| instance_variable_set :"@#{Naming.time_getter(field, prefix)}", val end define_method Naming.date_getter(field, prefix) do field_val = send(field) field_val.strftime(date_format) if field_val.present? end define_method Naming.date_setter(field, prefix) do |val| instance_variable_set :"@#{Naming.date_getter(field, prefix)}", val end end
split_date_time(field, options = {})
click to toggle source
# File lib/split_date_time/splitter.rb, line 36 def split_date_time(field, options = {}) define_split_accessors(field, options[:prefix], options[:date_format], options[:time_format]) define_concatenation_callback(field, options[:prefix]) end