Commit c9ea46745213b34c18ba53dae253eba290b47e1f
1 parent
3d567c77
Exists in
master
and in
29 other branches
Reorganizing the way we find tagged content
(ActionItem1553)
Showing
4 changed files
with
4 additions
and
11 deletions
Show diff stats
app/controllers/public/search_controller.rb
| @@ -226,7 +226,7 @@ class SearchController < PublicController | @@ -226,7 +226,7 @@ class SearchController < PublicController | ||
| 226 | @tag = environment.tags.find_by_name(params[:tag]) | 226 | @tag = environment.tags.find_by_name(params[:tag]) |
| 227 | @tag_cache_key = "tag_#{CGI.escape(@tag.to_s)}_env_#{environment.id.to_s}_page_#{params[:npage]}" | 227 | @tag_cache_key = "tag_#{CGI.escape(@tag.to_s)}_env_#{environment.id.to_s}_page_#{params[:npage]}" |
| 228 | if is_cache_expired?(@tag_cache_key, true) | 228 | if is_cache_expired?(@tag_cache_key, true) |
| 229 | - @tagged = environment.articles.find_tagged_with(@tag).paginate(:per_page => 10, :page => params[:npage]) | 229 | + @tagged = environment.articles.find_tagged_with(@tag.name).paginate(:per_page => 10, :page => params[:npage]) |
| 230 | end | 230 | end |
| 231 | end | 231 | end |
| 232 | 232 |
app/models/article.rb
| @@ -335,10 +335,6 @@ class Article < ActiveRecord::Base | @@ -335,10 +335,6 @@ class Article < ActiveRecord::Base | ||
| 335 | $1 || '' | 335 | $1 || '' |
| 336 | end | 336 | end |
| 337 | 337 | ||
| 338 | - def self.find_tagged_with(tag) | ||
| 339 | - self.find(:all, :include => :taggings, :conditions => ['taggings.tag_id = ?', tag.id]) | ||
| 340 | - end | ||
| 341 | - | ||
| 342 | def creator | 338 | def creator |
| 343 | creator_id = versions[0][:last_changed_by_id] | 339 | creator_id = versions[0][:last_changed_by_id] |
| 344 | creator_id && Profile.find(creator_id) | 340 | creator_id && Profile.find(creator_id) |
app/models/profile.rb
| @@ -420,8 +420,7 @@ private :generate_url, :url_options | @@ -420,8 +420,7 @@ private :generate_url, :url_options | ||
| 420 | end | 420 | end |
| 421 | 421 | ||
| 422 | def find_tagged_with(tag) | 422 | def find_tagged_with(tag) |
| 423 | - # FIXME: this can be SLOW | ||
| 424 | - articles.select {|item| item.tags.map(&:name).include?(tag) } | 423 | + self.articles.find_tagged_with(tag) |
| 425 | end | 424 | end |
| 426 | 425 | ||
| 427 | # Tells whether a specified profile has members or nor. | 426 | # Tells whether a specified profile has members or nor. |
test/unit/article_test.rb
| @@ -729,8 +729,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -729,8 +729,7 @@ class ArticleTest < Test::Unit::TestCase | ||
| 729 | 729 | ||
| 730 | should 'get tagged with tag' do | 730 | should 'get tagged with tag' do |
| 731 | a = Article.create!(:name => 'Published at', :profile => profile, :tag_list => 'bli') | 731 | a = Article.create!(:name => 'Published at', :profile => profile, :tag_list => 'bli') |
| 732 | - t = a.tags[0] | ||
| 733 | - as = Article.find_tagged_with(t) | 732 | + as = Article.find_tagged_with('bli') |
| 734 | 733 | ||
| 735 | assert_includes as, a | 734 | assert_includes as, a |
| 736 | end | 735 | end |
| @@ -742,8 +741,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -742,8 +741,7 @@ class ArticleTest < Test::Unit::TestCase | ||
| 742 | user_from_other_environment = create_user('other_user', :environment => other_environment).person | 741 | user_from_other_environment = create_user('other_user', :environment => other_environment).person |
| 743 | article_from_other_enviroment = create(Article, :profile => user_from_other_environment, :tag_list => 'bli') | 742 | article_from_other_enviroment = create(Article, :profile => user_from_other_environment, :tag_list => 'bli') |
| 744 | 743 | ||
| 745 | - tag = article_from_other_enviroment.tags.first | ||
| 746 | - tagged_articles_in_other_environment = other_environment.articles.find_tagged_with(tag) | 744 | + tagged_articles_in_other_environment = other_environment.articles.find_tagged_with('bli') |
| 747 | 745 | ||
| 748 | assert_includes tagged_articles_in_other_environment, article_from_other_enviroment | 746 | assert_includes tagged_articles_in_other_environment, article_from_other_enviroment |
| 749 | assert_not_includes tagged_articles_in_other_environment, article_from_this_environment | 747 | assert_not_includes tagged_articles_in_other_environment, article_from_this_environment |