ActiveRecord::Base
# File lib/acts_as_taggable_on/tag.rb, line 58 def self.find_or_create_all_with_like_by_name(*list) list = [list].flatten return [] if list.empty? existing_tags = Tag.named_any(list) list.map do |tag_name| comparable_tag_name = comparable_name(tag_name) existing_tag = existing_tags.find { |tag| comparable_name(tag.name) == comparable_tag_name } existing_tag || Tag.create(:name => tag_name) end end
CLASS METHODS:
# File lib/acts_as_taggable_on/tag.rb, line 50 def self.find_or_create_with_like_by_name(name) if (ActsAsTaggableOn.strict_case_match) self.find_or_create_all_with_like_by_name([name]).first else named_like(name).first || create(:name => name) end end
SCOPES:
# File lib/acts_as_taggable_on/tag.rb, line 24 def self.named(name) if ActsAsTaggableOn.strict_case_match where(["name = #{binary}?", name]) else where(["lower(name) = ?", name.downcase]) end end
# File lib/acts_as_taggable_on/tag.rb, line 32 def self.named_any(list) if ActsAsTaggableOn.strict_case_match where(list.map { |tag| sanitize_sql(["name = #{binary}?", tag.to_s.mb_chars]) }.join(" OR ")) else where(list.map { |tag| sanitize_sql(["lower(name) = ?", tag.to_s.mb_chars.downcase]) }.join(" OR ")) end end
INSTANCE METHODS:
# File lib/acts_as_taggable_on/tag.rb, line 75 def ==(object) super || (object.is_a?(Tag) && name == object.name) end
Generated with the Darkfish Rdoc Generator 2.