Escrevendo consultas SQL UPDATE com Arel

Arel é uma biblioteca de álgebra relacional em Ruby. Ele capacita a interface de consulta ActiveRecord do Rails e pode ser usado para construir SQL complexo de forma programática, sem a necessidade de manipulação de string propensa a erros.

Podemos usar Arel fora dos modelos Rails para construir e executar uma instrução SQL UPDATE simples.

Suponha que temos uma tabela de banco de dados,, userscom uma coluna nameque gostaríamos de atualizar para o usuário com um ID de 42.

Aqui usamos a Arel::UpdateManagerclasse, que sabe como construir e manipular consultas SQL UPDATE:

table = Arel::Table.new(:users)
update_manager
= Arel::UpdateManager.new table.engine
update_manager
.set [[table[:id], 42], [table[:name], "Jane Smith"]]
ActiveRecord::Base.connection.execute update_manager.to_sql

Observe que usamos o tableobjeto para se referir às colunas da userstabela.

Isso pode ser especialmente útil ao escrever tarefas Rake para manipular dados, já que o SQL que Arel produz tem mais probabilidade de ser compatível com seu banco de dados do que strings de SQL produzidas manualmente.