Sha256: cda0191e9a6c2a7996a9970efac62665dedd6828e81398e481a2b99de766d29a

Contents?: true

Size: 1.02 KB

Versions: 21

Compression:

Stored size: 1.02 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

require 'store_as_int'

module BetterRecord
  module ExchangeRateInteger

    def self.convert_to_exchange_rate(value)
      return StoreAsInt::ExchangeRate.new(0) unless value
      if (!value.kind_of?(Numeric))
        begin
          exchange_rate_to_i = (value.gsub(/\%/, '').presence || 0).to_d * StoreAsInt::ExchangeRate.base
          StoreAsInt::ExchangeRate.new(exchange_rate_to_i.to_i)
        rescue
          StoreAsInt::ExchangeRate.new
        end
      else
        StoreAsInt::ExchangeRate.new(value)
      end
    end

    module TableDefinition
      def exchange_rate_integer(*args, **opts)
        args.each do |name|
          column name, :exchange_rate_integer, **opts
        end
      end
    end

    class Type < BetterRecord::CustomType
      def self.normalize_type_value(value)
        BetterRecord::ExchangeRateInteger.convert_to_exchange_rate(value)
      end

      def self.serialize(value)
        normalize_type_value(value).value
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
better_record-0.25.2 lib/better_record/exchange_rate_integer.rb
better_record-0.25.1 lib/better_record/exchange_rate_integer.rb
better_record-0.25.0 lib/better_record/exchange_rate_integer.rb
better_record-0.24.4 lib/better_record/exchange_rate_integer.rb
better_record-0.24.3 lib/better_record/exchange_rate_integer.rb
better_record-0.23.7 lib/better_record/exchange_rate_integer.rb
better_record-0.23.6 lib/better_record/exchange_rate_integer.rb
better_record-0.23.5 lib/better_record/exchange_rate_integer.rb
better_record-0.23.4 lib/better_record/exchange_rate_integer.rb
better_record-0.23.3 lib/better_record/exchange_rate_integer.rb
better_record-0.22.9 lib/better_record/exchange_rate_integer.rb
better_record-0.22.8 lib/better_record/exchange_rate_integer.rb
better_record-0.22.7 lib/better_record/exchange_rate_integer.rb
better_record-0.22.6 lib/better_record/exchange_rate_integer.rb
better_record-0.22.5 lib/better_record/exchange_rate_integer.rb
better_record-0.22.4 lib/better_record/exchange_rate_integer.rb
better_record-0.22.3 lib/better_record/exchange_rate_integer.rb
better_record-0.21.3 lib/better_record/exchange_rate_integer.rb
better_record-0.22.2 lib/better_record/exchange_rate_integer.rb
better_record-0.22.0 lib/better_record/exchange_rate_integer.rb