Association proxies in Active Record are
middlemen between the object that holds the association, known as the
@owner, and the actual associated object, known as the
@target. The kind of association any proxy is about is
available in @reflection. That's an instance of the class
ActiveRecord::Reflection::AssociationReflection.
For example, given
class Blog < ActiveRecord::Base has_many :posts end blog = Blog.first
the association proxy in blog.posts has the object in
blog as @owner, the collection of its posts as
@target, and the @reflection object represents a
:has_many macro.
This class delegates unknown methods to @target via
method_missing.
The @target object is not loaded until needed. For example,
blog.posts.count
is computed directly through SQL and does not trigger by itself the instantiation of the actual post records.