2024-03-18 11:21:00 -04:00
|
|
|
module Monetizable
|
2024-08-23 10:06:24 -04:00
|
|
|
extend ActiveSupport::Concern
|
2024-03-18 11:21:00 -04:00
|
|
|
|
2024-08-23 10:06:24 -04:00
|
|
|
class_methods do
|
|
|
|
def monetize(*fields)
|
|
|
|
fields.each do |field|
|
2025-02-21 11:57:59 -05:00
|
|
|
define_method("#{field}_money") do |**args|
|
|
|
|
value = self.send(field, **args)
|
|
|
|
|
|
|
|
return nil if value.nil? || monetizable_currency.nil?
|
|
|
|
|
|
|
|
Money.new(value, monetizable_currency)
|
2024-03-18 11:21:00 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2024-08-23 10:06:24 -04:00
|
|
|
end
|
2025-02-21 11:57:59 -05:00
|
|
|
|
|
|
|
private
|
|
|
|
def monetizable_currency
|
|
|
|
currency
|
|
|
|
end
|
2024-03-18 11:21:00 -04:00
|
|
|
end
|