Module: FormatAlias

Defined in:
lib/format_alias.rb,
lib/format_alias/railtie.rb,
lib/format_alias/version.rb,
lib/format_alias/formatters/date.rb,
lib/format_alias/formatters/polymorphic.rb

Defined Under Namespace

Classes: Railtie

Constant Summary collapse

VERSION =
"0.0.6"

Instance Method Summary collapse

Instance Method Details

#date_format_alias(name, format, options = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
# File 'lib/format_alias/formatters/date.rb', line 2

def date_format_alias(name, format, options = {})
  define_setter_alias(name, options) do |value|
    time = Time.parse(value, format) rescue nil
    { name => time }
  end

  define_getter_alias(name, options) do |value|
    value.strftime(format) unless value.nil?
  end
end

#polymorphic_alias(name, options = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/format_alias/formatters/polymorphic.rb', line 2

def polymorphic_alias(name, options = {})
  delimiter  = options.delete(:delimiter) || ':'
  attributes = ["#{name}_type", "#{name}_id"]

  options_with_attributes = options.merge(attributes: attributes)

  define_setter_alias(name, options_with_attributes) do |value|
    values = value.to_s.split(delimiter)
    Hash[attributes.zip(values)]
  end

  define_getter_alias(name, options_with_attributes) do |*values|
    values = values.compact
    values.join(delimiter) if values.any?
  end
end