module FidorApi::Model::Helpers::AttributeDecimalMethods

Public Instance Methods

attribute_decimal_methods(name) click to toggle source

rubocop:disable Metrics/AbcSize, Metrics/MethodLength

# File lib/fidor_api/model/helpers/attribute_decimal_methods.rb, line 6
def attribute_decimal_methods(name)
  define_method name do
    value = read_attribute(name)
    return if value.nil?

    BigDecimal((value / 100.0).to_s)
  end

  define_method "#{name}=" do |value|
    case value
    when String
      value = (BigDecimal(value) * 100.0).to_i
    when Integer
      value = value
    when BigDecimal
      value = (value * 100.0).to_i
    else
      raise ArgumentError
    end

    write_attribute(name, value)
  end
end