INSTANCE METHODS:
# File lib/acts_as_taggable_on/tag.rb, line 58 def ==(object) super || (object.is_a?(Tag) && name == object.name) end
# File lib/acts_as_taggable_on/tag.rb, line 66 def count read_attribute(:count).to_i end
# File lib/acts_as_taggable_on/tag.rb, line 62 def to_s name end
# File lib/acts_as_taggable_on/tag.rb, line 41 def self.find_or_create_all_with_like_by_name(*list) list = [list].flatten return [] if list.empty? existing_tags = Tag.named_any(list).all new_tag_names = list.reject do |name| name = comparable_name(name) existing_tags.any? { |tag| comparable_name(tag.name) == name } end created_tags = new_tag_names.map { |name| Tag.create(:name => name) } existing_tags + created_tags end
CLASS METHODS:
# File lib/acts_as_taggable_on/tag.rb, line 37 def self.find_or_create_with_like_by_name(name) named_like(name).first || create(:name => name) end
SCOPES:
# File lib/acts_as_taggable_on/tag.rb, line 19 def self.named(name) where(["lower(name) = ?", name.downcase]) end
# File lib/acts_as_taggable_on/tag.rb, line 23 def self.named_any(list) where(list.map { |tag| sanitize_sql(["lower(name) = ?", tag.to_s.mb_chars.downcase]) }.join(" OR ")) end
# File lib/acts_as_taggable_on/tag.rb, line 27 def self.named_like(name) where(["name #{like_operator} ? ESCAPE '!'", "%#{escape_like(name)}%"]) end
# File lib/acts_as_taggable_on/tag.rb, line 31 def self.named_like_any(list) where(list.map { |tag| sanitize_sql(["name #{like_operator} ? ESCAPE '!'", "%#{escape_like(tag.to_s)}%"]) }.join(" OR ")) end