Module: AttrOptional::ClassMethods
- Defined in:
- lib/attr_optional.rb
Instance Method Summary collapse
- #attr_optional(*keys) ⇒ Object
- #attr_optional?(key) ⇒ Boolean
- #inherited(klass) ⇒ Object
- #optional_attributes ⇒ Object
- #undef_optional_attributes(*keys) ⇒ Object
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
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_attributes ⇒ Object
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 |