module ActsAsTaggableOn::Taggable::Related
Public Class Methods
included(base)
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 3 def self.included(base) base.extend ActsAsTaggableOn::Taggable::Related::ClassMethods base.initialize_acts_as_taggable_on_related end
Public Instance Methods
find_matching_contexts(search_context, result_context, options = {})
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 30 def find_matching_contexts(search_context, result_context, options = {}) matching_contexts_for(search_context.to_s, result_context.to_s, self.class, options) end
find_matching_contexts_for(klass, search_context, result_context, options = {})
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 34 def find_matching_contexts_for(klass, search_context, result_context, options = {}) matching_contexts_for(search_context.to_s, result_context.to_s, klass, options) end
matching_contexts_for(search_context, result_context, klass, options = {})
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 38 def matching_contexts_for(search_context, result_context, klass, options = {}) tags_to_find = tags_on(search_context).map { |t| t.name } related_where(klass, ["#{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}' 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 = ?", tags_to_find, result_context]) end
Private Instance Methods
exclude_self(klass, id)
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 51 def exclude_self(klass, id) "#{klass.table_name}.#{klass.primary_key} != #{id} AND" if [self.class.base_class, self.class].include? klass end
group_columns(klass)
click to toggle source
# File lib/acts_as_taggable_on/acts_as_taggable_on/related.rb, line 55 def group_columns(klass) if ActsAsTaggableOn::Utils.using_postgresql? grouped_column_names_for(klass) else "#{klass.table_name}.#{klass.primary_key}" end end