Как упростить мой модуль конвертации денег Rails?
Просто из любопытства:
Есть ли способ упростить такой файл:
module Converter
def hourly_rate
hourly_rate_in_cents.to_d / 100 if hourly_rate_in_cents
end
def hourly_rate=(number)
self.hourly_rate_in_cents = number.to_d * 100 if number.present?
end
def price
price_in_cents.to_d / 100 if price_in_cents
end
def price=(number)
self.price_in_cents = number.to_d * 100 if number.present?
end
def amount
amount_in_cents.to_d / 100 if amount_in_cents
end
def amount=(number)
self.amount_in_cents = number.to_d * 100 if number.present?
end
end
Я использую эту функцию, потому что мне нужно хранить все значения, связанные с деньгами, как integers
в моей базе данных, но мне не нравится повторная передача в моем коде.
Вы могли бы сделать что-то вроде этого
module Converter
def self.def_converter(name)
define_method(name) do
value_in_cents = send("#{name}_in_cents")
value_in_cents.to_d / 100 if value_in_cents.present?
end
define_method("#{name}=") do |number|
send("#{name}_in_cents=", number.to_d * 100) if number.present?
end
end
def_converter(:hourly_rate)
def_converter(:price)
def_converter(:amount)
end
- Вопросы
- Ruby-on-rails-3.2
- Как упростить мой модуль конвертации денег Rails?