module HairyDangerzone::Awesome::ClassMethods

Public Instance Methods

danger_danger(attribute, fail_message, &block) click to toggle source
# 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