module IncompleteDate::IncompleteDateAttr

Public Instance Methods

incomplete_date_attr(attr_name, raw_name) click to toggle source
# File lib/incomplete_date/active_record.rb, line 11
def incomplete_date_attr(attr_name, raw_name)
  instance_var = "@#{attr_name}"

  # getter
  define_method "#{attr_name}" do
    value = instance_variable_get(instance_var)
    value ||= IncompleteDate.new(read_attribute(raw_name))
    instance_variable_set(instance_var, value)
    value
  end

  # setter
  define_method "#{attr_name}=" do |value|
    #begin
      value = IncompleteDate.new(value)
      instance_variable_set(instance_var, value)
      write_attribute(raw_name, value.to_i)
    #rescue ArgumentError
    #  errors.add(raw_name)
    #end
  end
end
incomplete_date_attrs(*names) click to toggle source

Defines several virtual attributes at once for raw real attributes

# File lib/incomplete_date/active_record.rb, line 37
def incomplete_date_attrs(*names)
  options = names.extract_options!
  prefix = options.fetch(:prefix, 'raw')
  names.each do |name|
    raw_name = "#{prefix}_#{name}"
    incomplete_date_attr name, raw_name
  end
end