Jeff Pole
Jeff Pole

Reputation: 355

ActiveRecord search model using LIKE only returning exact matches

In my rails app I am trying to search the Users model based on certain conditions.

In particular, I have a location field which is a string and I want to search this field based on whether it contains the search string. For example, if I search for users with location 'oxford' I want it to also return users with a variation on that, like 'oxford, england'.

Having searched the web for the answer to this it seems that I should be using the LIKE keyword in the activerecord search, but for me this is only returning exact matches.

Here is a snippet of my code from the search method

conditions_array = []
conditions_array << [ 'lower(location) LIKE ?', options[:location].downcase ] if !options[:location].empty?
conditions = build_search_conditions(conditions_array)
results = User.where(conditions)

Am I doing something wrong? Or is using LIKE not the right approach to achieving my objective?

Upvotes: 1

Views: 556

Answers (1)

xdazz
xdazz

Reputation: 160883

You need to do like '%oxford%'

% Matches any number of characters, even zero characters

conditions_array << [ 'lower(location) LIKE ?', "%#{options[:location].downcase}%" ] if !options[:location].empty?

Upvotes: 2

Related Questions