Module: SplitDateTime::Splitter::ClassMethods
- Defined in:
- lib/split_date_time/splitter.rb
Instance Method Summary collapse
- #define_concatenation_callback(field, prefix) ⇒ Object
- #define_split_accessors(field, prefix = nil) ⇒ Object
- #split_date_time(field, options = {}) ⇒ Object
Instance Method Details
#define_concatenation_callback(field, prefix) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/split_date_time/splitter.rb', line 58 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) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/split_date_time/splitter.rb', line 41 def define_split_accessors(field, prefix = nil) define_method Naming.time_getter(field, prefix) do field_val = send(field) field_val.strftime('%H:%M') 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('%m/%d/%Y') 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 = {}) ⇒ Object
36 37 38 39 |
# File 'lib/split_date_time/splitter.rb', line 36 def split_date_time(field, = {}) define_split_accessors(field, [:prefix]) define_concatenation_callback(field, [:prefix]) end |