Module: CleanRoom::AirLock::Model

Defined in:
lib/clean_room/air_lock.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/clean_room/air_lock.rb', line 26

def self.included(base)
  base.extend ClassMethods
  base.sanitizable_attributes = {}

  if base.respond_to? :before_validate
    base.before_validate :sanitize_attributes
  end
end

Instance Method Details

#sanitize_attribute(name, rules = {}) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/clean_room/air_lock.rb', line 41

def sanitize_attribute(name, rules = {})
  current_value = self.send(name)
  cleaned_value = Filter.clean(current_value, rules)

  raise Exceptions::Contaminated.new("#{name} contained unacceptable data") if rules[:raise] && (current_value != cleaned_value)
  self.send("#{name}=".to_sym, cleaned_value)
end

#sanitize_attributesObject



35
36
37
38
39
# File 'lib/clean_room/air_lock.rb', line 35

def sanitize_attributes
  self.class.sanitizable_attributes.each do |name, rules|
    sanitize_attribute name, rules
  end
end