acts-as-taggable-on 1.0.7 → 1.0.8
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.0.
|
1
|
+
1.0.8
|
@@ -141,8 +141,8 @@ module ActiveRecord
|
|
141
141
|
|
142
142
|
|
143
143
|
if options.delete(:exclude)
|
144
|
-
tags_conditions =
|
145
|
-
conditions << "#{table_name}.#{primary_key} NOT IN (SELECT #{Tagging.table_name}.taggable_id FROM #{Tagging.table_name} JOIN #{Tag.table_name} ON #{Tagging.table_name}.tag_id = #{Tag.table_name}.id AND #{tags_conditions} WHERE #{Tagging.table_name}.taggable_type = #{quote_value(base_class.name)})"
|
144
|
+
tags_conditions = tags.map { |t| sanitize_sql(["#{Tag.table_name}.name LIKE ?", t]) }.join(" OR ")
|
145
|
+
conditions << "#{table_name}.#{primary_key} NOT IN (SELECT #{Tagging.table_name}.taggable_id FROM #{Tagging.table_name} JOIN #{Tag.table_name} ON #{Tagging.table_name}.tag_id = #{Tag.table_name}.id AND (#{tags_conditions}) WHERE #{Tagging.table_name}.taggable_type = #{quote_value(base_class.name)})"
|
146
146
|
|
147
147
|
else
|
148
148
|
tags.each do |tag|
|
@@ -277,10 +277,10 @@ module ActiveRecord
|
|
277
277
|
|
278
278
|
def tags_on(context, owner=nil)
|
279
279
|
if owner
|
280
|
-
opts = {:conditions => ["context = ? AND tagger_id = ? AND tagger_type = ?",
|
280
|
+
opts = {:conditions => ["#{Tagging.table_name}.context = ? AND #{Tagging.table_name}.tagger_id = ? AND #{Tagging.table_name}.tagger_type = ?",
|
281
281
|
context.to_s, owner.id, owner.class.to_s]}
|
282
282
|
else
|
283
|
-
opts = {:conditions => ["context = ?", context.to_s]}
|
283
|
+
opts = {:conditions => ["#{Tagging.table_name}.context = ?", context.to_s]}
|
284
284
|
end
|
285
285
|
base_tags.find(:all, opts)
|
286
286
|
end
|
@@ -60,7 +60,8 @@ describe "Taggable" do
|
|
60
60
|
@taggable.skill_list = "ruby, rails, css"
|
61
61
|
@taggable.tag_list = "bob, charlie"
|
62
62
|
@taggable.save
|
63
|
-
|
63
|
+
|
64
|
+
TaggableModel.tagged_with("ruby").first.should == @taggable
|
64
65
|
TaggableModel.tagged_with("bob", :on => :skills).first.should_not == @taggable
|
65
66
|
TaggableModel.tagged_with("bob", :on => :tags).first.should == @taggable
|
66
67
|
end
|
@@ -98,12 +99,22 @@ describe "Taggable" do
|
|
98
99
|
bob.tags_on(:rotors).should_not be_empty
|
99
100
|
end
|
100
101
|
|
102
|
+
it "should be able to find tagged" do
|
103
|
+
bob = TaggableModel.create(:name => "Bob", :tag_list => "fitter, happier, more productive", :skill_list => "ruby, rails, css")
|
104
|
+
frank = TaggableModel.create(:name => "Frank", :tag_list => "weaker, depressed, inefficient", :skill_list => "ruby, rails, css")
|
105
|
+
steve = TaggableModel.create(:name => 'Steve', :tag_list => 'fitter, happier, more productive', :skill_list => 'c++, java, ruby')
|
106
|
+
|
107
|
+
TaggableModel.find_tagged_with("ruby", :order => 'taggable_models.name').should == [bob, frank, steve]
|
108
|
+
TaggableModel.find_tagged_with("ruby, rails", :order => 'taggable_models.name').should == [bob, frank]
|
109
|
+
TaggableModel.find_tagged_with(["ruby", "rails"], :order => 'taggable_models.name').should == [bob, frank]
|
110
|
+
end
|
111
|
+
|
101
112
|
it "should be able to find tagged on a custom tag context" do
|
102
113
|
bob = TaggableModel.create(:name => "Bob")
|
103
114
|
bob.set_tag_list_on(:rotors, "spinning, jumping")
|
104
115
|
bob.tag_list_on(:rotors).should == ["spinning","jumping"]
|
105
116
|
bob.save
|
106
|
-
TaggableModel.find_tagged_with("spinning", :on => :rotors).
|
117
|
+
TaggableModel.find_tagged_with("spinning", :on => :rotors).should == [bob]
|
107
118
|
end
|
108
119
|
|
109
120
|
it "should be able to use named scopes to chain tag finds" do
|
@@ -112,9 +123,10 @@ describe "Taggable" do
|
|
112
123
|
steve = TaggableModel.create(:name => 'Steve', :tag_list => 'fitter, happier, more productive', :skill_list => 'c++, java, python')
|
113
124
|
|
114
125
|
# Let's only find those productive Rails developers
|
115
|
-
TaggableModel.tagged_with('rails', :on => :skills
|
116
|
-
TaggableModel.tagged_with('happier', :on => :tags
|
126
|
+
TaggableModel.tagged_with('rails', :on => :skills, :order => 'taggable_models.name').should == [bob, frank]
|
127
|
+
TaggableModel.tagged_with('happier', :on => :tags, :order => 'taggable_models.name').should == [bob, steve]
|
117
128
|
TaggableModel.tagged_with('rails', :on => :skills).tagged_with('happier', :on => :tags).should == [bob]
|
129
|
+
TaggableModel.tagged_with('rails').tagged_with('happier', :on => :tags).should == [bob]
|
118
130
|
end
|
119
131
|
|
120
132
|
it "should be able to find tagged with only the matching tags" do
|
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.0.
|
4
|
+
version: 1.0.8
|
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: 2009-11-
|
12
|
+
date: 2009-11-13 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|