2011-10-26 8 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

それは潜在的に2つのクエリがかかることがありますが、あなたは、次のことを試みることができる:複雑な検索のために

result = where("name = #{search}") 
result.empty? ? where("name LIKE %#{search}%") : result 
関連する問題