module ActiveModel::AttributeMethods

def method_missing(method, *args, &block)

can instantiate master through Client#master.
class belonging to the +clients+ table with a +master_id+ foreign key
It's also possible to instantiate related objects, so a Client

ActiveRecord::Base#attributes=.
the attributes hash -- except for multiple assignments with
Person#name and Person#name= and never directly use
methods. So a +Person+ class with a +name+ attribute can for example use
returned by attributes, as though they were first-class
Allows access to the object attributes, which are held in the hash
def method_missing(method, *args, &block)
  if respond_to_without_attributes?(method, true)
    super
  else
    match = matched_attribute_method(method.to_s)
    match ? attribute_missing(match, *args, &block) : super
  end
end