Module: ActsAsTaggableOn::Taggable::Related::InstanceMethods
- Defined in:
- lib/acts_as_taggable_on/acts_as_taggable_on/related.rb
Instance Method Summary collapse
- #matching_contexts_for(search_context, result_context, klass, options = {}) ⇒ Object
- #related_tags_for(context, klass, options = {}) ⇒ Object
Instance Method Details
#matching_contexts_for(search_context, result_context, klass, options = {}) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/acts_as_taggable_on/acts_as_taggable_on/related.rb', line 44 def matching_contexts_for(search_context, result_context, klass, = {}) = (search_context).collect { |t| t.name } klass.select("#{klass.table_name}.*, COUNT(#{ActsAsTaggableOn::Tag.table_name}.#{ActsAsTaggableOn::Tag.primary_key}) AS count") \ .from("#{klass.table_name}, #{ActsAsTaggableOn::Tag.table_name}, #{ActsAsTaggableOn::Tagging.table_name}") \ .where(["#{exclude_self(klass, id)} #{klass.table_name}.#{klass.primary_key} = #{ActsAsTaggableOn::Tagging.table_name}.taggable_id AND #{ActsAsTaggableOn::Tagging.table_name}.taggable_type = '#{klass.base_class.to_s}' AND #{ActsAsTaggableOn::Tagging.table_name}.tag_id = #{ActsAsTaggableOn::Tag.table_name}.#{ActsAsTaggableOn::Tag.primary_key} AND #{ActsAsTaggableOn::Tag.table_name}.name IN (?) AND #{ActsAsTaggableOn::Tagging.table_name}.context = ?", , result_context]) \ .group(group_columns(klass)) \ .order("count DESC") end |
#related_tags_for(context, klass, options = {}) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/acts_as_taggable_on/acts_as_taggable_on/related.rb', line 54 def (context, klass, = {}) = Array.wrap(.delete(:ignore)).map(&:to_s) || [] = (context).collect { |t| t.name }.reject { |t| .include? t } klass.select("#{klass.table_name}.*, COUNT(#{ActsAsTaggableOn::Tag.table_name}.#{ActsAsTaggableOn::Tag.primary_key}) AS count") \ .from("#{klass.table_name}, #{ActsAsTaggableOn::Tag.table_name}, #{ActsAsTaggableOn::Tagging.table_name}") \ .where(["#{exclude_self(klass, id)} #{klass.table_name}.#{klass.primary_key} = #{ActsAsTaggableOn::Tagging.table_name}.taggable_id AND #{ActsAsTaggableOn::Tagging.table_name}.taggable_type = '#{klass.base_class.to_s}' AND #{ActsAsTaggableOn::Tagging.table_name}.tag_id = #{ActsAsTaggableOn::Tag.table_name}.#{ActsAsTaggableOn::Tag.primary_key} AND #{ActsAsTaggableOn::Tag.table_name}.name IN (?)", ]) \ .group(group_columns(klass)) \ .order("count DESC") end |