Design patterns vary. We learnt code was cool in controller then removed it from here in favor of fat models. Yet it was not the best approach either.
The Service Object pattern arised articulated around so called Poor Old Ruby Objects. While it encapsulate logic and make it easy to test fundamental questions remain: how do I know everything went well when I called the object? How to retrieve errors? How to rollback? What if I have object ls calling other objects?
I try to address these questions with examples and existing libraries.