Sanitizando queries com ActiveRecord
Leia em menos de um minuto
No artigo Executando SQL no Rails mostrei como trabalhar com SQL no ActiveRecord. Para sanitizar parâmetros da query, utilizei o método quote
. O grande problema de utilizar este método é que se você tiver uma quantidade muito grande de parâmetros vai ser, como diz o Lucas Húngaro, um trabalho de presidiário!
O ActiveRecord possui um método protegido chamado sanitize_sql_array
, que permite trabalhar com todas as interpolações de valores. Para utilizá-lo mais facilmente, basta fazer um monkey patch na classe ActiveRecord::Base
.
class ActiveRecord::Base
def self.sanitize_query(query, options)
sanitize_sql_array([query, options])
end
end
Agora, você pode utilizar queries desta maneira:
options = {:title => "Simples Idéias"}
sql = User.sanitize_query("select * from blogs where title = :title", options)
User.connection.execute(sql)