Home > Software engineering >  Best way to convert a field in Rails from decimals to integer in cents
Best way to convert a field in Rails from decimals to integer in cents

Time:04-07

I have a Product model in Rails and the amount is stored as an integer in cents in the database.

Example of this field:

enter image description here

  • What is the best way to allow admins that are creating the product to enter a human-friendly decimal like 10.00 instead of 1000?
  • Should I just do this on the client-side before the form is submitted with Javascript?
  • Should I change the field to a text field instead of integer and convert it with a before_save callback?

It seems like the Money gem might be overkill for this. Surely this is a common problem. What is a common way people solve this?

CodePudding user response:

Just as ideas

Using money gem

class Product < ApplicationRecord
  monetize :price_cents
end
= f.input :price

Or using monkeypatching

class Product < ApplicationRecord
  def price
    self[:price] / 100.0
  end

  def price=(value)
    super(value * 100)
  end
end

In my opinion gem is more convenient

  • Related