В моем Rails API есть ряд контроллеров, которые очень похожи - они имеют только базовые действия CRUD и различаются только по форме базовых данных, которые они хранят.
То, как я реализую авторизацию, в каждом контроллере у меня есть несколько вызовов before_action, которые проверяют разрешения на соответствующем уровне для заданных действий CRUD - эти проверки разрешений в буквальном смысле дубликаты, за исключением того, что каждый из них принимает разные имена переменная экземпляра - например, можно сказать
before_action -> { is_app_admin?(@app_name) } #where @app_name is the actual name of the app.
Теперь, если каким-то образом сам контроллер может принять параметр, я мог бы поместить их перед проверками в ApiController и не повторять их. Или я мог бы изменить имя переменной во всех контроллерах на что-то общее, например @app_name, но в самих контроллерах, что приводит к менее читаемому коду.
Существует ли стандартный способ абстрагирования дубликата кода в сценарии этого типа?