UPDATE: If I did this again, I would consider packaging the code as a Concern
I recently wanted to DRY up some repetitive Rails association code, similar associations used in multiple models. This gave me the opportunity to figure out a few tricks, like creating a module Class method and using metaprogramming to add dynamically named accessors.
Anyway, here is the Module:
...and the client model...