Safe ActiveRecord como consulta

Estoy tratando de escribir una consulta LIKE.

Leí que las cadenas de caracteres puros no son seguras, sin embargo, no pude encontrar ninguna documentación que explicara cómo escribir seguro como HKE Query.

¿Es posible? ¿Debo defenderme manualmente contra la inyección de SQL?

Para asegurarse de que su cadena de consulta se desinfecte correctamente, use la matriz o la syntax de consulta hash para describir sus condiciones:

Foo.where("bar LIKE ?", "%#{query}%") 

o:

 Foo.where("bar LIKE :query", query: "%#{query}%") 

Si es posible que la query incluya el carácter % primero debe sanitizar la query con sanitize_sql_like :

 Foo.where("bar LIKE ?", "%#{sanitize_sql_like(query)}%") Foo.where("bar LIKE :query", query: "%#{sanitize_sql_like(query)}%") 

Con Arel puede realizar esta consulta segura y portátil:

 title = Model.arel_table[:title] Model.where(title.matches("%#{query}%")) 

Para PostgreSQL será

 Foo.where("bar ILIKE ?", "%#{query}%") 

Tu puedes hacer

 MyModel.where(["title LIKE ?", "%#{params[:query]}%"])