Ainda não disponível em versões estáveis do Rails (na data de publicação desse artigo), mas a funcionalidade Active Record Encryption vem para ajudar a encriptar informações no banco de dados usando Active Record.
A documentação ainda está sendo atualizada, mas pode ser lida aqui. Para testar a funcionalidade, você pode usar versão do Rails disponível na brach main
:
# Gemfile
gem 'rails', github: ‘rails/rails’
Para começar temos que criar uma nova migração no banco:
$ rails db:encryption:init
Então ele vai pedir para algumas chaves serem adicionadas nas credenciais:
$ rails credentials:edit
E você vai colar no arquivo as chaves que aparecem no terminal, algo como:
# credentials.yml
active_record_encryption:
primary_key: Psjg0jf4N2v2LPf5voJtKeTIER8dXSiD
deterministic_key: oAefbbvvfoJ8fuBNADCRtSOk6u0Go7Na
key_derivation_salt: 0SioNonc66n1DzWz3ahJHW42Zr9dBUsg
Agora basta usar a configuração no seu Model:
encrypts :atributo_encriptado
A biblioteca encripta o atributo antes de salvar no banco de dados e vai decriptar quando o valor for buscado.
Na documentação há várias outras opções para usar a funcionalidade com outras bibliotecas como o ActionText, entre outras, que vocês podem explorar.