Strong parameters: expect
O curso trata do params.expect nos strong parameters do Rails. Começa pelo bug de adulteração de array: uma string onde se espera um hash faz require e permit quebrarem, e um hash onde se espera um array passa com o formato errado. As aulas leem a linha de expect deste app, explicam o colchete duplo para arrays de hashes e mostram várias chaves raiz com desestruturação. Também tratam do expect! e da busca de status por nome exato de classe no Rails. Por fim, migram um controller require/permit e comparam a saída.
O que você vai aprender
- ✓Como o expect junta require e permit numa chamada
- ✓Por que payloads adulterados quebram ou passam por require e permit
- ✓O colchete duplo para arrays de hashes e o colchete vazio para arrays de escalares
- ✓Várias chaves raiz numa chamada expect, desestruturadas em variáveis
- ✓Como o expect! difere do expect e por que vira um 500
- ✓Migração de um controller require/permit, testada com payload válido e com chave ausente
O bug que o params.expect existe para corrigir
Parâmetros e segurança terminou deixando o expect de lado: como require e permit funcionam sozinhos, e como a chamada única do expect substitui os dois, ficou para um curso próprio, este. Tudo o que aquele curso ensinou sobre require e permit continua valendo. Este curso é sobre o expect em si.
Ler a aula completa grátis →Currículo
7 aulasO bug que o params.expect existe para corrigir
Mostra como require e permit quebram ou devolvem o formato errado com payloads adulterados, e como o expect trata os dois.
Uma chamada, dois trabalhos: a linha params.expect deste app
Lê a linha course_params deste app e o código-fonte do Rails, mostrando que o expect usa permit_filters e require.
A sintaxe de colchete duplo: pets: [[:name]] quer dizer array de hashes
Explica por que o expect pede pets: [[:name]] para um array de hashes e tags: [] para arrays de escalares.
Múltiplas chaves raiz numa única chamada expect, desestruturadas diretamente
Passa várias chaves raiz numa chamada expect, desestrutura os resultados e mostra que todas as chaves são obrigatórias.
expect!, e uma esquisitice de nome exato no tratamento de erros do Rails
Trata do expect! e de como a busca de status por nome exato de classe transforma ExpectedParameterMissing em 500.
Migrando um controller require/permit para expect
Migra o controller de settings para expect, compara as saídas e aponta os controllers que precisam de colchete duplo.
Juntando tudo: conferência de formato mais estrita, uma chamada em vez de duas
Revisa as aulas: o expect roda require e permit por baixo e acrescenta conferência mais estrita do formato.