acts_as_searchableとMySQL4.0と順序

どうも、HyperEstraierでとってきた順序が保証されていないっぽい。
find([1, 2, 3…])でも順序がばらばらになるのかなぁ? > MySQL 4.0
とりあえずパッチ。

Index: acts_as_searchable.rb
===================================================================
--- acts_as_searchable.rb	(revision 1179)
+++ acts_as_searchable.rb	(working copy)
@@ -202,7 +202,16 @@
             )
           )
             
-          matches.blank? ? [] : find(matches.collect { |m| m.attr('db_id') }, find_options)
+          if matches.blank?
+            []
+          else
+            alist = find(matches.collect { |m| m.attr('db_id') }, find_options).map do |row|
+              [row.id, row]
+            end
+
+            rows = Hash[*alist.flatten]
+            matches.map {|m| rows[m.attr('db_id').to_i] }
+          end
         end
         
         # Clear all entries from index