Sha256: 8ec4371d3a060e2d241b76d678769161b80ab63f2a855cd0264e46623b9d44d6
Contents?: true
Size: 1.1 KB
Versions: 16
Compression:
Stored size: 1.1 KB
Contents
# frozen_string_literal: true require 'store_as_int' module BetterRecord module ExchangeRateInteger module TableDefinition def exchange_rate_integer(*args, **opts) args.each do |name| column name, :exchange_rate_integer, **opts end end end class Type < ActiveRecord::Type::Value def cast(value) convert_to_exchange_rate(value) end def deserialize(value) super(convert_to_exchange_rate(value)) end def serialize(value) super(convert_to_exchange_rate(value).value) end private def 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 end end end
Version data entries
16 entries across 16 versions & 1 rubygems