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
# File 'lib/hairy_dangerzone.rb', line 10

def danger_danger(attribute, fail_message, &block)
  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