module AttributesSanitizer::Concern
Public Instance Methods
add_sanitizer_to_attribute(attribute, sanitizer)
click to toggle source
# File lib/attributes_sanitizer/concern.rb, line 43 def add_sanitizer_to_attribute(attribute, sanitizer) self.attributes_sanitize_map[attribute] ||= [] unless self.attributes_sanitize_map[attribute].include?(sanitizer) self.attributes_sanitize_map[attribute] << sanitizer end end
attributes_sanitize_map()
click to toggle source
# File lib/attributes_sanitizer/concern.rb, line 6 def attributes_sanitize_map @attributes_sanitize_map ||= {} end
execute_sanitizers_for(attribute, value)
click to toggle source
# File lib/attributes_sanitizer/concern.rb, line 23 def execute_sanitizers_for(attribute, value) return value if self.attributes_sanitize_map[attribute].blank? || value.nil? self.attributes_sanitize_map[attribute].reduce(value) do |value, sanitizer| sanitizer.call(value) end end
fetch_sanitizers_from_options(attributes)
click to toggle source
# File lib/attributes_sanitizer/concern.rb, line 33 def fetch_sanitizers_from_options(attributes) options = attributes.extract_options!.dup sanitizers = Array(options[:with]) raise ArgumentError, "You need to supply at least one attribute" if attributes.empty? raise ArgumentError, "You need to supply at least one sanitize method" if sanitizers.empty? sanitizers end
sanitize_attributes(*attributes)
click to toggle source
# File lib/attributes_sanitizer/concern.rb, line 10 def sanitize_attributes(*attributes) fetch_sanitizers_from_options(attributes).each do |sanitizer| sanitizer = AttributesSanitizer::SanitizerProc.new(sanitizer) attributes.each do |attribute| add_sanitizer_to_attribute(attribute, sanitizer) end end AttributesSanitizer::Overrider.new(self).override_getters_and_setters end