Class: Tag

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/acts_as_taggable_on/tag.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cleanup(name) ⇒ Object



7
8
9
10
11
# File 'lib/acts_as_taggable_on/tag.rb', line 7

def self.cleanup(name)
  return nil if name.blank?
  n = name.to_s.mb_chars.downcase.strip.to_s
  n.blank? ? nil : n
end

.find_or_create_with_like_by_name(name) ⇒ Object

LIKE is used for cross-database case-insensitivity



19
20
21
22
23
24
25
26
27
28
# File 'lib/acts_as_taggable_on/tag.rb', line 19

def self.find_or_create_with_like_by_name(name)
  name = Tag.cleanup(name)
  
  begin
    find(:first, :conditions => ["name LIKE ?", name]) || create(:name => name)
  rescue ActiveRecord::StatementInvalid
    # If we can't insert the tag (perhaps a dupe), try to refetch.
    find(:first, :conditions => ["name LIKE ?", name])
  end
end

.per_pageObject



42
43
44
# File 'lib/acts_as_taggable_on/tag.rb', line 42

def self.per_page
  10
end

Instance Method Details

#==(object) ⇒ Object



30
31
32
# File 'lib/acts_as_taggable_on/tag.rb', line 30

def ==(object)
  super || (object.is_a?(Tag) && name == object.name)
end

#countObject



38
39
40
# File 'lib/acts_as_taggable_on/tag.rb', line 38

def count    
  read_attribute(:count).to_i
end

#name=(name) ⇒ Object



13
14
15
16
# File 'lib/acts_as_taggable_on/tag.rb', line 13

def name=(name)
  #strip any non-alphanumeric and downcase
  self["name"] = Tag.cleanup(name)
end

#to_sObject



34
35
36
# File 'lib/acts_as_taggable_on/tag.rb', line 34

def to_s
  name
end