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