出于好奇:
有没有办法简化这样的文件:
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
,但我不喜欢我的代码中的重复。
答案 0 :(得分:1)
你可以做这样的事情
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