class AttributesSanitizer::Overrider

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/attributes_sanitizer/overrider.rb, line 6
def initialize(klass)
  @klass = klass
end

Public Instance Methods

override_getters_and_setters() click to toggle source
# File lib/attributes_sanitizer/overrider.rb, line 10
def override_getters_and_setters
  return if klass.attributes_sanitize_map.blank?

  attributes_to_override.each do |attribute|
    override_getter(attribute)
    override_setter(attribute)
  end
end

Private Instance Methods

attributes_to_override() click to toggle source
# File lib/attributes_sanitizer/overrider.rb, line 21
def attributes_to_override
  klass.attributes_sanitize_map.keys
end
override_getter(attribute) click to toggle source
# File lib/attributes_sanitizer/overrider.rb, line 30
def override_getter(attribute)
  getter = attribute.to_sym
  override_method(getter) do
    attribute_value = self[getter.to_s]
    return if attribute_value.nil?

    self.class.execute_sanitizers_for(attribute, attribute_value)
  end
end
override_method(method_name, &block) click to toggle source
# File lib/attributes_sanitizer/overrider.rb, line 25
def override_method(method_name, &block)
  return if klass.method_defined?(method_name)
  klass.define_method(method_name, &block)
end
override_setter(attribute) click to toggle source
Calls superclass method
# File lib/attributes_sanitizer/overrider.rb, line 40
def override_setter(attribute)
  override_method(:"#{attribute}=") do |new_value|
    if new_value.present?
      new_value = self.class.execute_sanitizers_for(attribute, new_value)
    end

    super(new_value)
  end
end