Summary
In this chapter, you learned about the limitations of the Rails MVC design. You practiced refactoring fat Rails controllers and models. You learned about the service object concept and how it can be used to encapsulate business operations in code to lighten controllers and models. You also learned about the potential downsides to the growing number of services and how pulling out more specialized abstractions can help. Finally, you learned about the relationship between the layered architecture and abstraction layers and how to use the former to separate abstractions.
In the next chapter, we will take a closer look at domain services and the possible abstractions that could be found in this group of objects.