Module: Tagalong::Tagger::InstanceMethods
- Defined in:
- lib/tagalong/tagger.rb
Instance Method Summary collapse
- #create_tag(tag_name) ⇒ Object
- #delete_tag(tag_name) ⇒ Object
- #has_tag?(tag_name) ⇒ Boolean
- #tag(taggable_obj, tag_name) ⇒ Object
- #taggables_with(name) ⇒ Object
- #tags ⇒ Object
- #tags_including(options = {}) ⇒ Object
- #untag(taggable_obj, tag_name) ⇒ Object
Instance Method Details
#create_tag(tag_name) ⇒ Object
23 24 25 |
# File 'lib/tagalong/tagger.rb', line 23 def create_tag(tag_name) TagalongTag.create!(:tagger_id => self.id, :tagger_type => self.class.to_s, :name => tag_name) end |
#delete_tag(tag_name) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/tagalong/tagger.rb', line 33 def delete_tag(tag_name) tag = .find_by_name(tag_name) if tag.present? tag.destroy end end |
#has_tag?(tag_name) ⇒ Boolean
40 41 42 |
# File 'lib/tagalong/tagger.rb', line 40 def has_tag?(tag_name) .include?(tag_name) end |
#tag(taggable_obj, tag_name) ⇒ Object
17 18 19 20 21 |
# File 'lib/tagalong/tagger.rb', line 17 def tag(taggable_obj, tag_name) raise Tagalong::TaggableNotPersisted, "Taggable must be persisted to tag it." if !taggable_obj.persisted? tag_manager = Tagalong::TagManager.new(taggable_obj, self) tag_manager.add_tag(tag_name) end |
#taggables_with(name) ⇒ Object
72 73 74 75 76 |
# File 'lib/tagalong/tagger.rb', line 72 def taggables_with(name) self..where(:name => name).each do |t| return t.taggables end end |
#tags ⇒ Object
44 45 46 |
# File 'lib/tagalong/tagger.rb', line 44 def self..order("name ASC").map { |r| r.name } end |
#tags_including(options = {}) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/tagalong/tagger.rb', line 48 def (={}) out = [] query = self..order("name ASC") if [:has_been_tagged] query = query. select("tagalong_tags.id, tagalong_tags.name, tagalong_tags.number_of_references, tagalong_taggings.id as used"). joins("LEFT OUTER JOIN tagalong_taggings ON tagalong_taggings.tagalong_tag_id = tagalong_tags.id AND tagalong_taggings.taggable_id = '#{[:has_been_tagged].id.to_s}'") end query.each do |tag| hash = {:name => tag.name} if [:number_of_references] hash[:number_of_references] = tag.number_of_references end if [:has_been_tagged] hash[:has_been_tagged] = !tag.used.nil? end out << hash end return out end |
#untag(taggable_obj, tag_name) ⇒ Object
27 28 29 30 31 |
# File 'lib/tagalong/tagger.rb', line 27 def untag(taggable_obj, tag_name) raise Tagalong::TaggableNotPersisted, "Taggable must be persisted to untag it." if !taggable_obj.persisted? tag_manager = Tagalong::TagManager.new(taggable_obj, self) tag_manager.remove_tag(tag_name) end |