acts-as-taggable-on 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.2
|
@@ -395,14 +395,16 @@ module ActiveRecord
|
|
395
395
|
transaction do
|
396
396
|
contexts.each do |context|
|
397
397
|
cache = tag_list_cache_on(context)
|
398
|
-
|
398
|
+
|
399
399
|
cache.each do |owner, list|
|
400
400
|
new_tags = Tag.find_or_create_all_with_like_by_name(list.uniq)
|
401
|
+
taggings = Tagging.find(:all, :conditions => { :taggable_id => self.id, :taggable_type => self.class.to_s })
|
401
402
|
|
402
403
|
# Destroy old taggings:
|
403
404
|
if owner
|
404
405
|
old_tags = tags_on(context, owner) - new_tags
|
405
|
-
old_taggings =
|
406
|
+
old_taggings = Tagging.find(:all, :conditions => { :taggable_id => self.id, :taggable_type => self.class.to_s, :tag_id => old_tags, :tagger_id => owner, :tagger_type => owner.class.to_s, :context => context })
|
407
|
+
|
406
408
|
old_taggings.each(&:destroy)
|
407
409
|
else
|
408
410
|
old_tags = tags_on(context) - new_tags
|
@@ -415,7 +417,7 @@ module ActiveRecord
|
|
415
417
|
|
416
418
|
# create new taggings:
|
417
419
|
new_tags.each do |tag|
|
418
|
-
|
420
|
+
Tagging.create!(:tag_id => tag.id, :context => context, :tagger => owner, :taggable => self)
|
419
421
|
end
|
420
422
|
end
|
421
423
|
end
|
@@ -26,6 +26,8 @@ class Tag < ActiveRecord::Base
|
|
26
26
|
|
27
27
|
def self.find_or_create_all_with_like_by_name(*list)
|
28
28
|
list = [list].flatten
|
29
|
+
|
30
|
+
return [] if list.empty?
|
29
31
|
|
30
32
|
existing_tags = Tag.named_any(list).all
|
31
33
|
new_tag_names = list.reject { |name| existing_tags.any? { |tag| tag.name.downcase == name.downcase } }
|
@@ -85,21 +85,25 @@ describe "acts_as_tagger" do
|
|
85
85
|
|
86
86
|
context "when called by multiple tagger's" do
|
87
87
|
before(:each) do
|
88
|
-
@user_x = TaggableUser.new
|
89
|
-
@user_y = TaggableUser.new
|
88
|
+
@user_x = TaggableUser.new(:name => "User X")
|
89
|
+
@user_y = TaggableUser.new(:name => "User Y")
|
90
90
|
@taggable = TaggableModel.new(:name => 'acts_as_taggable_on', :tag_list => 'plugin')
|
91
91
|
|
92
92
|
@user_x.tag(@taggable, :with => 'ruby, rails', :on => :tags)
|
93
93
|
@user_y.tag(@taggable, :with => 'ruby, plugin', :on => :tags)
|
94
|
+
|
95
|
+
@user_y.tag(@taggable, :with => '', :on => :tags)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should delete owned tags" do
|
99
|
+
@user_y.owned_tags.should be_empty
|
94
100
|
end
|
95
101
|
|
96
102
|
it "should not delete other taggers tags" do
|
97
|
-
@
|
98
|
-
@taggable.all_tags_list_on(:tags).should include('ruby')
|
103
|
+
@user_x.owned_tags.should have(2).items
|
99
104
|
end
|
100
105
|
|
101
106
|
it "should not delete original tags" do
|
102
|
-
@user_y.tag(@taggable, :with => '', :on => :tags)
|
103
107
|
@taggable.all_tags_list_on(:tags).should include('plugin')
|
104
108
|
end
|
105
109
|
end
|
@@ -64,6 +64,10 @@ describe Tag do
|
|
64
64
|
Tag.find_or_create_all_with_like_by_name("awesome", "epic").map(&:name).should == ["awesome", "epic"]
|
65
65
|
}.should change(Tag, :count).by(1)
|
66
66
|
end
|
67
|
+
|
68
|
+
it "should return an empty array if no tags are specified" do
|
69
|
+
Tag.find_or_create_all_with_like_by_name([]).should == []
|
70
|
+
end
|
67
71
|
end
|
68
72
|
|
69
73
|
it "should require a name" do
|
@@ -24,10 +24,12 @@ describe "Tagger" do
|
|
24
24
|
@user2.tag(@taggable, :with => 'java, python, lisp, ruby', :on => :tags)
|
25
25
|
}.should change(Tagging, :count).by(6)
|
26
26
|
|
27
|
-
@user.owned_tags.map(&:name).sort.should == %w(ruby scheme)
|
27
|
+
@user.owned_tags.map(&:name).sort.should == %w(ruby scheme).sort
|
28
28
|
@user2.owned_tags.map(&:name).sort.should == %w(java python lisp ruby).sort
|
29
|
-
|
30
|
-
@taggable.tags_from(@
|
29
|
+
|
30
|
+
@taggable.tags_from(@user).sort.should == %w(ruby scheme).sort
|
31
|
+
@taggable.tags_from(@user2).sort.should == %w(java lisp python ruby).sort
|
32
|
+
|
31
33
|
@taggable.all_tags_list_on(:tags).sort.should == %w(ruby scheme java python lisp).sort
|
32
34
|
@taggable.all_tags_on(:tags).size.should == 6
|
33
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts-as-taggable-on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-07 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|