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,, users
com uma coluna name
que gostaríamos de atualizar para o usuário com um ID de 42.
Aqui usamos a Arel::UpdateManager
classe, 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 table
objeto para se referir às colunas da users
tabela.
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.