undefine_attribute_methods() public

Removes all the previously dynamically defined methods from the class, including alias attribute methods.

class Person
  include ActiveModel::AttributeMethods

  attr_accessor :name
  attribute_method_suffix '_short?'
  define_attribute_method :name
  alias_attribute :first_name, :name

  private
    def attribute_short?(attr)
      send(attr).length < 5
    end
end

person = Person.new
person.name = 'Bob'
person.first_name  # => "Bob"
person.name_short? # => true

Person.undefine_attribute_methods

person.name_short? # => NoMethodError
person.first_name  # => NoMethodError
Show source
Register or log in to add new notes.