2013-03-13 63 views
0

在我的Rails應用程序中,我試圖根據特定條件搜索用戶模型。使用LIKE的ActiveRecord搜索模型僅返回完全匹配

特別是,我有一個位置領域這是一個字符串,我想搜索基於此領域是否包含搜索字符串。例如,如果我搜索位置爲「牛津」的用戶,我希望它也能爲用戶返回一個變體,如「牛津,英格蘭」。

在網絡上搜索到這個答案後,似乎應該在activerecord搜索中使用LIKE關鍵字,但對於我來說這只是返回完全匹配。

這裏是我的代碼從搜索方法

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

我是不是做錯了什麼片段?或者正在使用LIKE而不是正確的方法來實現我的目標?

回答

1

你需要做的like '%oxford%'

%匹配任何數目的字符,甚至零個字符

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