Sha256: ee7d7afe3f5ea2d34f734c782994e8e5ada2b9afacdd04c3556c6760c75f68c4
Contents?: true
Size: 760 Bytes
Versions: 10
Compression:
Stored size: 760 Bytes
Contents
# frozen_string_literal: true class MoneyType < ActiveRecord::Type::Value def cast(value) return nil unless value convert_to_money(value) end def deserialize(value) super(convert_to_money(value)) end def serialize(value) new_val = convert_to_money(value) super(new_val ? new_val.value : nil) end private def convert_to_money(value) return nil unless value if (!value.kind_of?(Numeric)) begin dollars_to_cents = (value.gsub(/\$/, '').presence || 0).to_d * 100 StoreAsInt.money(dollars_to_cents.to_i) rescue StoreAsInt::Money.new end else StoreAsInt.money(value) end end end ActiveRecord::Type.register(:money_column, MoneyType)
Version data entries
10 entries across 10 versions & 1 rubygems