How to do a LIKE query in Arel and Rails?
activerecord, arel, ruby-on-rails
Solution
This is how you perform a like query in arel:
users = User.arel_table
User.where(users[:name].matches("%#{user_name}%"))
PS:
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)))
Problem
I want to do something like: ``` SELECT * FROM USER WHERE NAME LIKE '%Smith%'; ``` My attempt in Arel: ``` # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql ``` However, this becomes: ``` SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; ``` Arel wraps the query string 'Smith' correctly, but because this is a LIKE statement it doesnt work. How does one do a LIKE query in Arel? P.S. Bonus--I am actually trying to scan two fields on the table, both name and description, to see if there are any matches to the query. How would that work?