2011-10-26 58 views
0
def self.search(search) 
    if search 
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
    end 
end 

我將如何修改這個功能,所以它首先檢查是否有在name領域search參數完全匹配,如果沒有精確匹配,返回匹配,而不是LIKE ?查詢的結果?如何修改此活動記錄查詢以首先檢查完全匹配?

回答

0
def self.search(search) 
    if search 
      results = find(:all, :conditions => ['name LIKE ?', "#{search}"]) 
      results = find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) if results.empty? 
    end 
end 

對於複雜的搜索,我建議使用像獅身人面像

一個seatrch引擎
2

你可以嘗試以下方法,儘管它可能潛在地需要兩個查詢:

result = where("name = #{search}") 
result.empty? ? where("name LIKE %#{search}%") : result