So for the active record-y interface, we're going to see naive method chains like this:
# transitions invocations
home.client_divisions.client_division(uuid).studies.create(params)
# Or trying to access an attribute
home.client_divisions.client_division(uuid).studies.study(uuid).name
Attributes should be terminal calls, and probably shouldn't exist outside of an if else or case statement, but if we have method missing return the representor self if it doesn't match a method, these chains will basically progress as far as they know how to. So if studies gets cool and is renamed studiez, the result of the above call would be the client division representor. Then we could write a meaningfull ===
for case statements, which would let code for dealing with this look like this: