Method: ActiveModel::AttributeMethods::ClassMethods#undefine_attribute_methods
- Defined in:
- lib/active_model/attribute_methods.rb
#undefine_attribute_methods ⇒ Object
Removes all the previously dynamically defined methods from the class.
class Person
include ActiveModel::AttributeMethods
attr_accessor :name
attribute_method_suffix '_short?'
define_attribute_method :name
private
def attribute_short?(attr)
send(attr).length < 5
end
end
person = Person.new
person.name = 'Bob'
person.name_short? # => true
Person.undefine_attribute_methods
person.name_short? # => NoMethodError
324 325 326 327 328 329 |
# File 'lib/active_model/attribute_methods.rb', line 324 def undefine_attribute_methods generated_attribute_methods.module_eval do instance_methods.each { |m| undef_method(m) } end attribute_method_matchers_cache.clear end |