Module: HairyDangerzone::Awesome::ClassMethods

Defined in:
lib/hairy_dangerzone.rb

Instance Method Summary collapse

Instance Method Details

#danger_danger(attribute, fail_message, &block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/hairy_dangerzone.rb', line 10

def danger_danger(attribute, fail_message, &block)
  self.instance_eval do
    define_method :"#{attribute}_with_danger_danger=" do |new_value|
      if block.call(new_value)
        send(:"#{attribute}_without_danger_danger=", new_value)
      else
        fail fail_message
      end
    end

    alias_method :"#{attribute}_without_danger_danger=", :"#{attribute}="
    alias_method :"#{attribute}=", :"#{attribute}_with_danger_danger="
  end
end