Module: FieldHelpers

Included in:
Volt::Model
Defined in:
lib/volt/models/field_helpers.rb

Overview

Provides a method to setup a field on a model.

Defined Under Namespace

Modules: ClassMethods Classes: InvalidFieldClass

Constant Summary collapse

NUMERIC_CAST =
lambda do |convert_method, val|
  begin
    orig = val

    val = send(convert_method, val)

    if RUBY_PLATFORM == 'opal'
      # Opal has a bug in 0.7.2 that gives us back NaN without an
      # error sometimes.
      val = orig if val.nan?
    end
  rescue TypeError, ArgumentError => e
    # ignore, unmatched types will be caught below.
    val = orig
  end

  return val
end
FIELD_CASTS =
{
  String        => :to_s.to_proc,
  Fixnum        => lambda {|val| NUMERIC_CAST[:Integer, val] },
  Numeric       => lambda {|val| NUMERIC_CAST[:Float, val] },
  Float         => lambda {|val| NUMERIC_CAST[:Float, val] },
  Time          => nil,
  TrueClass     => nil,
  FalseClass    => nil,
  NilClass      => nil,
  Volt::Boolean => nil
}

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



89
90
91
92
# File 'lib/volt/models/field_helpers.rb', line 89

def self.included(base)
  base.class_attribute :fields_data
  base.send :extend, ClassMethods
end