From 518f2836b6e38cad3f777593f8ef54ab0207cada Mon Sep 17 00:00:00 2001 From: MoisesMachado Date: Thu, 17 Jul 2008 22:16:22 +0000 Subject: [PATCH] ActionItem562: fixed search for articles --- lib/acts_as_searchable.rb | 19 +++++++++++++++++-- test/unit/tiny_mce_article_test.rb | 7 +++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/acts_as_searchable.rb b/lib/acts_as_searchable.rb index 9aae354..e90b6a6 100644 --- a/lib/acts_as_searchable.rb +++ b/lib/acts_as_searchable.rb @@ -2,8 +2,23 @@ class << ActiveRecord::Base def acts_as_searchable(options = {}) acts_as_ferret({ :remote => true }.merge(options)) - def find_by_contents(*args) - find_with_ferret(*args) + def find_by_contents(query, ferret_options = {}, db_options = {}) + if ferret_options[:page] + db_options[:page] = ferret_options.delete(:page) + end + if ferret_options[:per_page] + db_options[:per_page] = ferret_options.delete(:per_page) + end + + ids = find_ids_with_ferret(query, ferret_options)[1].map{|r|r[:id].to_i} + if db_options[:conditions] + db_options[:conditions] = sanitize_sql_for_conditions(db_options[:conditions]) + " and #{table_name}.id in (#{ids.join(', ')})" + else + db_options[:conditions] = "#{table_name}.id in (#{ids.join(', ')})" + end + + db_options[:page] ||= 1 + paginate(:all, db_options) end end diff --git a/test/unit/tiny_mce_article_test.rb b/test/unit/tiny_mce_article_test.rb index ef6c979..d34cce7 100644 --- a/test/unit/tiny_mce_article_test.rb +++ b/test/unit/tiny_mce_article_test.rb @@ -15,4 +15,11 @@ class TinyMceArticleTest < Test::Unit::TestCase assert_kind_of String, TinyMceArticle.short_description end + should 'be found when searching for articles by query' do + ze = create_user('zezinho').person + tma = TinyMceArticle.create!(:name => 'test tinymce article', :body => '---', :profile => ze) + assert_includes TinyMceArticle.find_by_contents('article'), tma + assert_includes Article.find_by_contents('article'), tma + end + end -- libgit2 0.21.2