Skip to content
This repository has been archived by the owner on Dec 27, 2022. It is now read-only.

Commit

Permalink
preliminary untag work
Browse files Browse the repository at this point in the history
  • Loading branch information
lusis committed May 10, 2011
1 parent b4d8929 commit 1bccdcd
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
18 changes: 18 additions & 0 deletions lib/noah/models/tags.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ class Tag < Model
index :members
index :name

def delete
self.members.each_value do |member_array|
member_array.each do |member|
member.tags.key.srem "#{self.id}"
end
end
super
end

def validate
super
assert_present :name
Expand All @@ -29,6 +38,15 @@ def members
hsh
end

def delete_member(node)
nc = class_to_lower(node.class.to_s)+"s"
if self.members[nc.to_sym].member?(node)
Ohm.redis.srem("#{self.key}:members", "#{node.key}")
node.untag!(self.name) unless node.tags.member?(self) == false
end
self.save
end

def to_hash
h = {:name => name, :created_at => created_at, :updated_at => updated_at}
h.merge!(members_to_hash)
Expand Down
18 changes: 18 additions & 0 deletions lib/noah/taggable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,27 @@ def tag!(tag_name)
tags << my_tag
my_tag.members = self
end
self.save
end

def untag!(tag_name)
case tag_name.class.to_s
when "Array"
tag_name.each do |t|
my_tag = ::Noah::Tag.find(:name => t).first
if self.tags.member?(my_tag)
self.tags.key.srem "#{my_tag.id}"
my_tag.delete_member(self)
end
end
else
my_tag = ::Noah::Tag.find(:name => tag_name).first
if self.tags.member?(my_tag)
self.tags.key.srem "#{my_tag.id}"
my_tag.delete_member(self)
end
end
self.save
end

def to_hash
Expand Down

0 comments on commit 1bccdcd

Please sign in to comment.