Method: ActiveModel::AttributeMethods::ClassMethods#undefine_attribute_methods

Defined in:
lib/active_model/attribute_methods.rb

#undefine_attribute_methodsObject

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