Module: AttrOptional::ClassMethods

Defined in:
lib/attr_optional.rb

Instance Method Summary collapse

Instance Method Details

#attr_optional(*keys) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/attr_optional.rb', line 16

def attr_optional(*keys)
  if defined? undef_required_attributes
    undef_required_attributes(*keys)
  end
  optional_attributes.concat(keys)
  attr_accessor(*keys)
end

#attr_optional?(key) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/attr_optional.rb', line 24

def attr_optional?(key)
  optional_attributes.include?(key)
end

#inherited(klass) ⇒ Object



9
10
11
12
13
14
# File 'lib/attr_optional.rb', line 9

def inherited(klass)
  super
  unless optional_attributes.empty?
    klass.attr_optional(*optional_attributes)
  end
end

#optional_attributesObject



28
29
30
# File 'lib/attr_optional.rb', line 28

def optional_attributes
  @optional_attributes ||= []
end

#undef_optional_attributes(*keys) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/attr_optional.rb', line 32

def undef_optional_attributes(*keys)
  keys.each do |key|
    if attr_optional?(key)
      undef_method key, :"#{key}="
      optional_attributes.delete key
    end
  end
end