2011-06-17 1 views
2

near_matchesを1つだけ選択するスマートな方法はありますか?私が探している名前と完全に一致するものが見つかった場合、近くのマッチのリストにその名前が必要なわけではありません。レコードの選択近くのマッチはレール3の以前の直接マッチに依存します

@match = Item.where("name = '" + params[:name] + "'").first 
if @match 
    @near_matches = Item.where("name like '%" + params[:name] + "%' and id != " + @match.id.to_s)  
else 
    @near_matches = Item.where("name like '%" + params[:name] + "%'")  
end 

答えて

1

ない非常に何を尋ねたが、これは少しそれを引き締め:クエリは怠惰されているので、これは動作します

@match = Item.find_by_name params[:name] 
@near_matches = Item.where('name LIKE ?', "%#{params[:name]}%") 
@near_matches = @near_matches.where('id != ?', @match.id) if @match 

- 彼らはする必要がするまで、彼らが実際に実行していません。

疑問符は、より安全なバインド変数です。

関連する問題