<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -123,12 +123,6 @@ module ActsAsSearchable
         after_destroy :remove_from_index
         after_save    :estraier_clear_changed_attributes
 
-        #estraier needs to know if this class has subclasses -&gt; different query
-        #but subclasses is protected
-        def self.subclasses_s
-          subclasses.map &amp;:to_s
-        end
-
         #overwrite attributes and alias methods to watch for changes
         estraier.watched_for_change.each do |attr_name|
           method_to_watch = &quot;#{attr_name}=&quot;
@@ -392,8 +386,8 @@ module ActsAsSearchable
         return condition
       end
 
-      #search for type_base(=&gt;all subclasses) ?
-      if is_searchable? and not ar_class.subclasses_s.blank?
+      #search for type_base(=&gt;find all subclasses) ?
+      if is_searchable? and not ar_class.send(:subclasses).empty?
         condition.add_attr(&quot;type_base STREQ #{ searchable_base_class.to_s }&quot;)
       else
         condition.add_attr(&quot;type STREQ #{ ar_class.to_s }&quot;)
@@ -436,7 +430,10 @@ module ActsAsSearchable
     end
   protected
     def sanitize_options(options)
-      options.reverse_merge!(:limit =&gt; 100, :offset =&gt; 0)
+      options.reverse_merge!(:offset =&gt; 0)
+      options.reverse_merge!(:limit =&gt; 100) unless options[:count]
+      options.reverse_merge!(:limit =&gt; 0) if options[:count] and not options[:limit]
+
       options.assert_valid_keys(VALID_FULLTEXT_OPTIONS)
       options[:find] ||= {}
       [ :limit, :offset ].each { |k| options[:find].delete(k) }</diff>
      <filename>lib/acts_as_searchable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,16 @@ class ActsAsSearchableTest &lt; Test::Unit::TestCase
     assert_equal [],          Comment.estraier.searchable_fields
     assert_equal false,       Comment.estraier.quiet
   end
+
+  def test_sanitize_options_add_limit_to_query
+    assert_equal 100, Notification.estraier.send(:sanitize_options,{})[:limit]
+    assert_equal 1, Notification.estraier.send(:sanitize_options,{:limit=&gt;1})[:limit]
+  end
+
+  def test_sanitize_options_does_not_add_limit_to_count_query
+    assert_equal 0, Notification.estraier.send(:sanitize_options,{:count=&gt;true})[:limit]
+    assert_equal 1, Notification.estraier.send(:sanitize_options,{:count=&gt;true,:limit=&gt;1})[:limit]
+  end
   
   def test_hooks_presence
     assert Article.after_update.include?(:update_index)
@@ -85,8 +95,8 @@ class ActsAsSearchableTest &lt; Test::Unit::TestCase
   def test_fulltext_search_all_types
     reindex!
     assert_equal 1, Article.fulltext_search('mauris', :count =&gt; true,:all_types=&gt;true)
-    assert_equal 7,Article.fulltext_search('', :count =&gt; true,:all_types=&gt;true)
-    assert_equal 3,Article.fulltext_search('', :all_types=&gt;true).length#all_tyes is ignored if not applicable
+    assert_equal 8, Article.fulltext_search('', :count =&gt; true,:all_types=&gt;true)
+    assert_equal 3, Article.fulltext_search('', :all_types=&gt;true).length#all_tyes is ignored if not applicable
   end
 
   def test_fulltext_search_with_wildcard</diff>
      <filename>test/acts_as_searchable_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>dacd20dda78d4ad186c1fcec473bcb67cfce3535</id>
    </parent>
  </parents>
  <author>
    <name>micha</name>
    <email>micha@micha.(none)</email>
  </author>
  <url>http://github.com/grosser/acts_as_searchable/commit/f18d57daaf8bcb1ba77ba4877f54148d156acc70</url>
  <id>f18d57daaf8bcb1ba77ba4877f54148d156acc70</id>
  <committed-date>2008-09-19T03:08:11-07:00</committed-date>
  <authored-date>2008-09-19T03:08:11-07:00</authored-date>
  <message>subclasses through send, limit not used when counting</message>
  <tree>83b6d385b8a29531af8a6ff0875a1eb9ee3f098f</tree>
  <committer>
    <name>micha</name>
    <email>micha@micha.(none)</email>
  </committer>
</commit>
