module AttrRequired::ClassMethods

Public Instance Methods

attr_required(*keys) click to toggle source
# 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
attr_required?(key) click to toggle source
# File lib/attr_required.rb, line 26
def attr_required?(key)
  required_attributes.include? key
end
inherited(klass) click to toggle source
Calls superclass method
# File lib/attr_required.rb, line 11
def inherited(klass)
  super
  unless required_attributes.empty?
    klass.attr_required(*required_attributes)
  end
end
required_attributes() click to toggle source
# File lib/attr_required.rb, line 30
def required_attributes
  @required_attributes ||= []
end
undef_required_attributes(*keys) click to toggle source
# 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