module DigitalOpera::FormObject

Public Class Methods

date_field(field) click to toggle source
# File lib/digital_opera/form_object/base.rb, line 75
def self.date_field(field)
  # create a getter that gets the date and converts it to strftime
  send :define_method, field do
    if instance_variable_get("@#{field}").present?
      date = instance_variable_get("@#{field}")
      begin
        date.strftime('%m/%d/%Y')
      rescue
        date
      end
    end
  end

  # setter for date
  send :define_method, "#{field}=" do |date|
    if date.is_a? String
      begin
        d = date.gsub(' ', '')
        new_date = Date.parse(d)
      rescue
        new_date = date
      end
    else
      new_date = date
    end

    instance_variable_set("@#{field}", new_date)
  end

  send :define_method, "valid_#{field}" do
    begin
      val = send(field)
      val.is_a?(Date) || Date.parse(val)
    rescue
      errors.add(field.to_sym, 'is not a valid date')
    end
  end
end