undefine_attribute_methods() public

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
Show source
Register or log in to add new notes.