Module: HasSafeDates::DateTimeExt

Defined in:
lib/has_safe_dates/core_ext.rb

Instance Method Summary collapse

Instance Method Details

#execute_callstack_for_multiparameter_attributes(callstack) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/has_safe_dates/core_ext.rb', line 59

def execute_callstack_for_multiparameter_attributes(callstack)
  if ::ActiveRecord::Base.has_safe_fields_config[self.class.base_class]
    callstack.each do |name, values_with_empty_parameters|
      if ActiveRecord::Base.has_safe_fields_config[self.class.base_class][:fields].include?(name)
        date = values_with_empty_parameters.values_at(1, 2, 3).compact.join("-")
        time = values_with_empty_parameters.values_at(4, 5).compact.join(":")
        datetime_string = "#{date}#{time.blank? ? "" : " #{time}"}"

        # Convert multiparameter parts into a Date string, e.g. "2011-4-23",
        # and pass it through so that CoreExt methods handle the result.
        send("#{name}=", datetime_string)
      else
        super({ name => values_with_empty_parameters })
      end
    end
  else
    super(callstack)  # has_safe_dates is not enabled for the current field, so invoke the super method
  end
end