ProxyColumns adds a proxy column over the top of an existing column associated with an active-record model.
This proxy column overrides the original column's accessor methods. The basic proxy functionality doesn't do much beside set and get the value of original columns.
The Proxy object can be subclassed/overridden to provide any sort of functionality required. This enables additional functionality to be added on top of the underlying column. A ProxyColumn can delegate based on the column and the column's value, as seen in MetaDataProxyColumn
.
One of the problems I faced was that the accessor methods for a column on a model weren't generated until the first model was initialised. That is why the methods are added dynamically using the after_initialize callback.