Skip to content

Instantly share code, notes, and snippets.

@ilake
Created July 5, 2010 04:38
Show Gist options
  • Save ilake/464001 to your computer and use it in GitHub Desktop.
Save ilake/464001 to your computer and use it in GitHub Desktop.
#acts-as-taggable-on-2.0.0.rc1/lib/acts_as_taggable_on/acts_as_taggable_on/related.rb [RO] 64,3
def related_tags_for(context, klass, options = {})
tags_to_find = tags_on(context).collect { |t| t.name }
exclude_self = "#{klass.table_name}.id != #{id} AND" if self.class == klass
klass.scoped({ :select => "#{klass.table_name}.*, COUNT(#{Tag.table_name}.id) AS count",
:from => "#{klass.table_name}, #{Tag.table_name}, #{Tagging.table_name}",
:conditions => ["#{exclude_self} #{klass.table_name}.id = #{Tagging.table_name}.taggable_id AND #{Tagging.table_name}.taggable_type = '#{klass.to_s}' AND #{Tagging.table_name}.tag_id = #{Tag.table_name}.id AND #{Tag.table_name}.name IN (?)", tags_to_find],
:group => grouped_column_names_for(klass),
:order => "count DESC" }.update(options))
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment