¿Cómo hacer una consulta LIKE en Arel and Rails?

Quiero hacer algo como:

SELECT * FROM USER WHERE NAME LIKE '%Smith%'; 

Mi bash en Arel:

 # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql 

Sin embargo, esto se convierte en:

 SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; 

Arel ajusta la cadena de consulta ‘Smith’ correctamente, pero debido a que esta es una statement LIKE, no funciona.

¿Cómo se hace una consulta LIKE en Arel?

Bono de PS: en realidad estoy tratando de escanear dos campos en la tabla, tanto el nombre como la descripción, para ver si hay coincidencias con la consulta. ¿Cómo funcionaría eso?

Así es como se realiza una consulta similar en arel:

 users = User.arel_table User.where(users[:name].matches("%#{user_name}%")) 

PD:

 users = User.arel_table query_string = "%#{params[query]}%" param_matches_string = ->(param){ users[param].matches(query_string) } User.where(param_matches_string.(:name)\ .or(param_matches_string.(:description))) 

Tratar

 User.where("name like ?", "%#{params[:query]}%").to_sql 

PD.

 q = "%#{params[:query]}%" User.where("name like ? or description like ?", q, q).to_sql 

Sí, ha pasado mucho tiempo, pero @ cgg5207 ha agregado una modificación (más útil si vas a buscar parámetros largamente nombrados o múltiples con nombres largos o eres demasiado perezoso para escribir)

 q = "%#{params[:query]}%" User.where("name like :q or description like :q", :q => q).to_sql 

o

 User.where("name like :q or description like :q", :q => "%#{params[:query]}%").to_sql 

La respuesta de Reuben Mallaby puede acortarse aún más para usar enlaces de parámetros:

 User.where("name like :kw or description like :kw", :kw=>"%#{params[:query]}%").to_sql