Active Model Attribute Methods

ActiveModel::AttributeMethods provides a way to add prefixes and suffixes to your methods as well as handling the creation of Active Record like class methods such as table_name.

The requirements to implement ActiveModel::AttributeMethods are to:

  • include ActiveModel::AttributeMethods in your object
  • Call each Attribute Method module method you want to add, such as attribute_method_suffix or attribute_method_prefix
  • Call define_attribute_methods after the other methods are called.
  • Define the various generic _attribute methods that you have declared

A minimal implementation could be:

  class Person
    include ActiveModel::AttributeMethods

    attribute_method_affix  :prefix => 'reset_', :suffix => '_to_default!'
    attribute_method_suffix '_contrived?'
    attribute_method_prefix 'clear_'
    define_attribute_methods ['name']

    attr_accessor :name

    private

    def attribute_contrived?(attr)
      true
    end

    def clear_attribute(attr)
      send("#{attr}=", nil)
    end

    def reset_attribute_to_default!(attr)
      send("#{attr}=", "Default Name")
    end
  end

Notice that whenever you include ActiveModel::AttributeMethods in your class, it requires you to implement a attributes methods which returns a hash with each attribute name in your model as hash key and the attribute value as hash value.

Hash keys must be strings.

Aliases

  • respond_to?
Show files where this module is defined (1 file)
Register or log in to add new notes.