Module: AttrRequired::ClassMethods

Defined in:
lib/attr_required.rb

Instance Method Summary collapse

Instance Method Details

#attr_required(*keys) ⇒ Object



18
19
20
21
22
23
24
# 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) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/attr_required.rb', line 26

def attr_required?(key)
  required_attributes.include? key
end

#inherited(klass) ⇒ Object



11
12
13
14
15
16
# File 'lib/attr_required.rb', line 11

def inherited(klass)
  super
  unless required_attributes.empty?
    klass.attr_required(*required_attributes)
  end
end

#required_attributesObject



30
31
32
# File 'lib/attr_required.rb', line 30

def required_attributes
  @required_attributes ||= []
end

#undef_required_attributes(*keys) ⇒ Object



34
35
36
37
38
39
40
41
# 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