Filtros e concerns
O curso percorre os filtros e concerns de controller de um app Rails. Começa pelas duas chamadas before_action do Admin::BaseController e segue para a ordem da cadeia de callbacks entre classe mãe e filha, com only: e except: restringindo ações. Trata do skip_before_action e do único skip de CSRF do app, do rescue_from e da regra de casamento de exceções do Rails e do ActiveSupport::Concern. Fecha com uma duplicação ainda não extraída e um desafio em Ruby puro.
O que você vai aprender
- ✓Como o before_action registra métodos que rodam antes de toda ação de um controller e de suas subclasses
- ✓A ordem dos callbacks herdados e como only: e except: os restringem a certas ações
- ✓Por que um redirect_to num before_action para a cadeia, pelo terminador performed?
- ✓Como o skip_before_action tira o verify_authenticity_token de uma única ação de callback OAuth
- ✓Como o rescue_from casa exceções pela hierarquia de classes, procurando a partir do último handler declarado
- ✓Como o ActiveSupport::Concern funciona com os blocos included do e class_methods do
Duas chamadas before_action, protegendo toda página admin de uma vez
O app/controllers/admin/base_controller.rb deste app, por inteiro:
Ler a aula completa grátis →Currículo
7 aulasDuas chamadas before_action, protegendo toda página admin de uma vez
As duas chamadas before_action do Admin::BaseController protegem todo controller de admin que herda dele.
Mecânica do before_action: ordem, e restrição com only:/except:
Callbacks da mãe rodam antes dos da filha, only: e except: restringem ações, e performed? para a cadeia.
skip_before_action, e o único skip de CSRF deste app
O verify_authenticity_token é um before_action herdado, e o app o pula só no callback do GitHub.
rescue_from: o único handler deste app, e a regra de casamento do Rails
O único rescue_from do app renderiza um 404 com contexto, e o Rails casa handlers pela hierarquia.
ActiveSupport::Concern, testado num módulo, depois achado dentro do Rails
O ActiveSupport::Concern é testado num módulo descartável e depois achado no Rails e nos concerns do app.
Uma pequena duplicação que este app não extraiu para um concern
Uma linha de limite do Pagy repetida em dois controllers mostra quando vale extrair um concern.
Juntando tudo: filtros que rodam por você, e lógica que vale nomear uma vez
Uma revisão da cadeia de callbacks e dos concerns, seguida de um desafio que simula a cadeia de callbacks em Ruby puro.