Create dynamic roles that can be assigned to users. Based on the assigned role, the user will be able to perform or view various parts of the application.
Abstract super class that provides a thread-isolated attributes singleton, which resets automatically before and after each request. This allows you to keep all the per-request attributes easily available to the whole system.
In this episode, we look at refactoring a model with a few different approaches; modules, classes and concerns. We'll explore each implementation and when I'd use one over the other.