Skip to content

Instantly share code, notes, and snippets.

@brunofrank
Created August 4, 2017 12:17
Show Gist options
  • Save brunofrank/ef996f6862337ac843289cbb92a40460 to your computer and use it in GitHub Desktop.
Save brunofrank/ef996f6862337ac843289cbb92a40460 to your computer and use it in GitHub Desktop.
class String
def to_delocalized_decimal
delimiter = I18n::t('number.format.delimiter')
separator = I18n::t('number.format.separator')
self.gsub(/[#{delimiter}]/, '').gsub(separator, '.')
end
def to_delocalized_money
unit = I18n::t('number.currency.format.unit')
delimiter = I18n::t('number.currency.format.delimiter')
separator = I18n::t('number.currency.format.separator')
self.gsub(/[#{unit} ?#{delimiter}]/, '').gsub(separator, '.')
end
end
class ActiveRecord::Base
def self.localized_number(*fields)
fields.each do |field|
define_method("#{field}=") do |value|
self[field] = value.is_a?(String) ? value.to_delocalized_decimal : value
end
end
end
def self.localized_money(*fields)
fields.each do |field|
define_method("#{field}=") do |value|
self[field] = value.is_a?(String) ? value.to_delocalized_money : value
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment