The Decorator pattern allows you to add or modify behavior of objects in a situational way without affecting the base object.
This can be achieved though plain Ruby using the stdlib, or via popular gems such as Draper.