class ActsAsTaggableOn::Taggable::TaggedWithQuery::ExcludeTagsQuery
Public Instance Methods
build()
click to toggle source
# File lib/acts-as-taggable-on/taggable/tagged_with_query/exclude_tags_query.rb, line 7 def build taggable_model.joins(owning_to_tagger) .where(tags_not_in_list) .having(tags_that_matches_count) .readonly(false) end
Private Instance Methods
match_all_on_conditions()
click to toggle source
# File lib/acts-as-taggable-on/taggable/tagged_with_query/exclude_tags_query.rb, line 56 def match_all_on_conditions on_condition = tagging_arel_table[:taggable_id].eq(taggable_arel_table[taggable_model.primary_key]) .and(tagging_arel_table[:taggable_type].eq(taggable_model.base_class.name)) if options[:start_at].present? on_condition = on_condition.and(tagging_arel_table[:created_at].gteq(options[:start_at])) end if options[:end_at].present? on_condition = on_condition.and(tagging_arel_table[:created_at].lteq(options[:end_at])) end on_condition = on_condition.and(tagging_arel_table[:context].eq(options[:on])) if options[:on].present? on_condition end
owning_to_tagger()
click to toggle source
# File lib/acts-as-taggable-on/taggable/tagged_with_query/exclude_tags_query.rb, line 31 def owning_to_tagger return [] if options[:owned_by].blank? owner = options[:owned_by] arel_join = taggable_arel_table .join(tagging_arel_table) .on( tagging_arel_table[:tagger_id].eq(owner.id) .and(tagging_arel_table[:tagger_type].eq(owner.class.base_class.to_s)) .and(tagging_arel_table[:taggable_id].eq(taggable_arel_table[taggable_model.primary_key])) .and(tagging_arel_table[:taggable_type].eq(taggable_model.base_class.name)) ) if options[:match_all].present? arel_join = arel_join .join(tagging_arel_table, Arel::Nodes::OuterJoin) .on( match_all_on_conditions ) end arel_join.join_sources end