Sha256: 99138a6d9364a146304decd0ef21a3780d68d827af30f9048ab7f059fcbc178a
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
module MakeTaggable::Taggable::TaggedWithQuery class QueryBase def initialize(taggable_model, tag_model, tagging_model, tag_list, options) @taggable_model = taggable_model @tag_model = tag_model @tagging_model = tagging_model @tag_list = tag_list @options = options end private attr_reader :taggable_model, :tag_model, :tagging_model, :tag_list, :options def taggable_arel_table @taggable_arel_table ||= taggable_model.arel_table end def tag_arel_table @tag_arel_table ||= tag_model.arel_table end def tagging_arel_table @tagging_arel_table ||= tagging_model.arel_table end def tag_match_type(tag) matches_attribute = tag_arel_table[:name] matches_attribute = matches_attribute.lower unless MakeTaggable.strict_case_match if options[:wild].present? matches_attribute.matches("%#{escaped_tag(tag)}%", "!") else matches_attribute.matches(escaped_tag(tag), "!") end end def tags_match_type matches_attribute = tag_arel_table[:name] matches_attribute = matches_attribute.lower unless MakeTaggable.strict_case_match if options[:wild].present? matches_attribute.matches_any(tag_list.map { |tag| "%#{escaped_tag(tag)}%" }, "!") else matches_attribute.matches_any(tag_list.map { |tag| escaped_tag(tag).to_s }, "!") end end def escaped_tag(tag) tag = tag.downcase unless MakeTaggable.strict_case_match MakeTaggable::Utils.escape_like(tag) end def adjust_taggings_alias(taggings_alias) if taggings_alias.size > 75 taggings_alias = "taggings_alias_" + Digest::SHA1.hexdigest(taggings_alias) end taggings_alias end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
make_taggable-0.6.3 | lib/make_taggable/taggable/tagged_with_query/query_base.rb |