
Untitled
By: a guest on
May 9th, 2012 | syntax:
None | size: 0.79 KB | hits: 17 | expires: Never
def self.find_by_tags(*tags)
tags = tags.to_a.flatten
initial_tag_search = tags.pop
matches = find_tagged_with(initial_tag_search) | Category.find_tagged_with(initial_tag_search)
while p = tags.pop
new_item_matches = find_tagged_with p
new_category_matches = Category.find_tagged_with p
matches_equal_to_or_descended_from_new_category_matches = matches.reject {|match| !match.belongs_to_or_descends_from_one_of? new_category_matches}
new_item_matches_equal_to_or_descended_from_matches = new_item_matches.reject {|match| !match.belongs_to_or_descends_from_one_of? matches}
matches = matches_equal_to_or_descended_from_new_category_matches | new_item_matches_equal_to_or_descended_from_matches
end
matches.select {|match| match.klass == Item}
end