class Constraint class << self def defaultable_attribute(attr) attr_reader(attr) attr_accessor("default_#{attr}") alias_method "default_#{attr}?", "default_#{attr}" define_method("#{attr}=") do |value| self.send("default_#{attr}=", false) instance_variable_set("@#{attr}", value) end end end end