# File lib/attr_required.rb, line 18 def attr_required(*keys) if defined? undef_optional_attributes undef_optional_attributes(*keys) end required_attributes.concat keys attr_accessor(*keys) end
# File lib/attr_required.rb, line 26 def attr_required?(key) required_attributes.include? key end
# File lib/attr_required.rb, line 11 def inherited(klass) super unless required_attributes.empty? klass.attr_required(*required_attributes) end end
# File lib/attr_required.rb, line 30 def required_attributes @required_attributes ||= [] end
# File lib/attr_required.rb, line 34 def undef_required_attributes(*keys) keys.each do |key| if attr_required?(key) undef_method key, :"#{key}=" required_attributes.delete key end end end