module CustomFields::Types::Date::Target::ClassMethods

Public Instance Methods

apply_date_custom_field(klass, rule) click to toggle source

Adds a date field

@param [ Class ] klass The class to modify @param [ Hash ] rule It contains the name of the field and if it is required or not

# File lib/custom_fields/types/date.rb, line 17
def apply_date_custom_field(klass, rule)
  name = rule['name']

  klass.field name, type: ::Date, localize: rule['localized'] || false

  # other methods
  klass.send(:define_method, :"formatted_#{name}") { _get_formatted_date(name) }
  klass.send(:define_method, :"formatted_#{name}=") { |value| _set_formatted_date(name, value) }

  return unless rule['required']

  klass.validates_presence_of name, :"formatted_#{name}"
end
date_attribute_get(instance, name) click to toggle source

Build a hash storing the formatted value for a date custom field of an instance.

@param [ Object ] instance An instance of the class enhanced by the custom_fields @param [ String ] name The name of the date custom field

@return [ Hash ] field name => formatted date

# File lib/custom_fields/types/date.rb, line 39
def date_attribute_get(instance, name)
  if value = instance.send(:"formatted_#{name}")
    { name => value, "formatted_#{name}" => value }
  else
    {}
  end
end
date_attribute_set(instance, name, attributes) click to toggle source

Set the value for the instance and the date field specified by the 2 params.

@param [ Object ] instance An instance of the class enhanced by the custom_fields @param [ String ] name The name of the date custom field @param [ Hash ] attributes The attributes used to fetch the values

# File lib/custom_fields/types/date.rb, line 54
def date_attribute_set(instance, name, attributes)
  return unless attributes.key?(name) || attributes.key?("formatted_#{name}")

  value = attributes[name] || attributes["formatted_#{name}"]

  instance.send(:"formatted_#{name}=", value)
end