Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 9th, 2012  |  syntax: None  |  size: 0.79 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. def self.find_by_tags(*tags)
  2.     tags = tags.to_a.flatten
  3.     initial_tag_search = tags.pop
  4.     matches = find_tagged_with(initial_tag_search) | Category.find_tagged_with(initial_tag_search)
  5.     while p = tags.pop
  6.       new_item_matches = find_tagged_with p
  7.       new_category_matches = Category.find_tagged_with p
  8.       matches_equal_to_or_descended_from_new_category_matches = matches.reject {|match| !match.belongs_to_or_descends_from_one_of? new_category_matches}
  9.       new_item_matches_equal_to_or_descended_from_matches = new_item_matches.reject {|match| !match.belongs_to_or_descends_from_one_of? matches}
  10.       matches = matches_equal_to_or_descended_from_new_category_matches | new_item_matches_equal_to_or_descended_from_matches
  11.     end
  12.     matches.select {|match| match.klass == Item}
  13.   end