petities/petitions.eu

View on GitHub
app/models/concerns/transliterate.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# Transliterate attributes before validation
module Transliterate
  extend ActiveSupport::Concern

  included do
    class_attribute :transliterated_attributes, instance_writer: false
    before_validation :transliterate
  end

  class_methods do
    def transliterate(*fields)
      self.transliterated_attributes = fields
    end
  end

  private

  def transliterate
    transliterated_attributes.each do |field|
      value = send(field)
      send("#{field}=", ActiveSupport::Inflector.transliterate(value)) if value
    end
  end
end