Module: StringifyDate::ActiveRecord::Stringify::ClassMethods

Defined in:
lib/stringify_date/active_record/stringify.rb

Instance Method Summary collapse

Instance Method Details

#stringify(field, *args) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/stringify_date/active_record/stringify.rb', line 22

def stringify(field, *args)
  column_name = field.to_s
  options     = args.extract_options!
  format      = options[:format] || '%Y-%m-%d'
  name        = [column_name, 'string'].join('_')

  define_method name do
    date = send(column_name)
    date.strftime(format) if date.present?
  end

  define_method "#{name}=" do |value|
    parsed_value = parse_value(name, value, format)
    send("#{column_name}=", parsed_value)
  end

  define_method "validate_#{name}" do
    errors.add(name.to_sym, I18n.t('errors.invalid')) if instance_variable_get("@#{name}_invalid")
  end

  send(:validate, :"validate_#{name}")
end