What does your schema look like? I would have something like a Balances and CoinTypes table.
In the balance table you would track the crypto amounts as integers (like one would do for whole cents in USD meaning Satoshi's for BTC). You would need to be able to hold huge numbers in this column. I would do something like t.integer :coin_amount :int5, :limit => 5
Whereas, in the coin type table under each coin you can track the amount of decimal places you need to divide the crypto_amount column by.
Balances
| ID | COIN_AMOUNT |TYPE | DESCRIPTION |
| ------------- |---------------|------|-------------|
| 1 | 2300000000000 | 1 | "Ledger" |
| 2 | 100000000 | 2 | "Coinbase" |
| 3 | 100000000 | 2 | "Gemini" |
CoinTypes
| ID | NAME |DECIMALS |
| ------------- |---------------|----------|
| 1 | "Ethereum" | 18 |
| 2 | "Bitcoin" | 8 |
Now you know you hold 1 BTC on Gemini and Coinbase respectively. You can also calculate the amount of ethereum you hold to be .0000023. I wouldn't store the dollar amounts in the database but rather calculate them using the api of whatever service you are holding your coins on.
A red flag to me though is that you are tracking balances on what I assume are external services. Remember if you don't manage the keys, they aren't your coins.