acts-as-taggable-array-on 0.2.0 → 0.2.1
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d434088f73e146383bb7123506e8d4b7d89e1706
|
4
|
+
data.tar.gz: f046f099ce1f5cad0497278767661d8f73cceda7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a80faa85b005eab8e8bcf87d1ce09f4c319a912c0e1b5e593318aca0f9e72ea8b19544d4213df4855ce11bf4244f45ba77aeb46803acdcee639015cb9ec77537
|
7
|
+
data.tar.gz: 63b9d87fc308d757bad3b99178c2d454828ecd54b3e086ebd7de464e3765750acc61aaa4e9ef9919469a7f87bc68be90f2009b9320eaa4c2e76a05bc7fa9ec36
|
data/README.md
CHANGED
@@ -122,6 +122,12 @@ Tag cloud calculation uses subquery internally. To add scopes to the query, use
|
|
122
122
|
User.tags_cloud { where name: ['ken', 'tom'] }
|
123
123
|
```
|
124
124
|
|
125
|
+
To handle the result tags named 'tag' and 'count', prepend scopes.
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
User.where('tag like ?', 'aws%').limit(10).order('count desc').tags_cloud { where name: ['ken', 'tom'] }
|
129
|
+
```
|
130
|
+
|
125
131
|
### All Tags
|
126
132
|
|
127
133
|
Can get all tags easily.
|
@@ -138,10 +144,15 @@ As the same to tag cloud calculation, you can use block to add scopes to the que
|
|
138
144
|
User.all_tags { where name: ['ken', 'tom'] }
|
139
145
|
```
|
140
146
|
|
147
|
+
To handle the result tags named 'tag', prepend scopes.
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
User.where('tag like ?', 'aws%').all_tags { where name: ['ken', 'tom'] }
|
151
|
+
```
|
141
152
|
|
142
153
|
## Contributing
|
143
154
|
|
144
|
-
1. Fork it ( http://github.com
|
155
|
+
1. Fork it ( http://github.com/tmiyamon/acts-as-taggable-array-on/fork )
|
145
156
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
146
157
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
147
158
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -15,17 +15,17 @@ module ActsAsTaggableArrayOn
|
|
15
15
|
|
16
16
|
self.class.class_eval do
|
17
17
|
define_method :"all_#{tag_name}" do |options = {}, &block|
|
18
|
-
|
19
|
-
|
18
|
+
subquery_scope = unscoped.select("unnest(#{table_name}.#{tag_name}) as tag").uniq
|
19
|
+
subquery_scope = subquery_scope.instance_eval(&block) if block
|
20
20
|
|
21
|
-
|
21
|
+
from(subquery_scope).pluck('tag')
|
22
22
|
end
|
23
23
|
|
24
24
|
define_method :"#{tag_name}_cloud" do |options = {}, &block|
|
25
|
-
|
26
|
-
|
25
|
+
subquery_scope = unscoped.select("unnest(#{table_name}.#{tag_name}) as tag")
|
26
|
+
subquery_scope = subquery_scope.instance_eval(&block) if block
|
27
27
|
|
28
|
-
from(
|
28
|
+
from(subquery_scope).group('tag').order('tag').pluck('tag, count(*) as count')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -56,6 +56,14 @@ describe ActsAsTaggableArrayOn::Taggable do
|
|
56
56
|
it "returns filtered tags for tag_name with block" do
|
57
57
|
expect(User.all_colors{where(name: ["Ken", "Joe"])}).to match_array([@user2,@user3].map(&:colors).flatten.uniq)
|
58
58
|
end
|
59
|
+
|
60
|
+
it "returns filtered tags for tag_name with prepended scope" do
|
61
|
+
expect(User.where('tag like ?', 'bl%').all_colors).to match_array([@user1,@user2,@user3].map(&:colors).flatten.uniq.select{|name| name.start_with? 'bl'})
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns filtered tags for tag_name with prepended scope and bock" do
|
65
|
+
expect(User.where('tag like ?', 'bl%').all_colors{where(name: ["Ken", "Joe"])}).to match_array([@user2,@user3].map(&:colors).flatten.uniq.select{|name| name.start_with? 'bl'})
|
66
|
+
end
|
59
67
|
end
|
60
68
|
|
61
69
|
describe "#colors_cloud" do
|
@@ -70,6 +78,18 @@ describe ActsAsTaggableArrayOn::Taggable do
|
|
70
78
|
[@user2,@user3].map(&:colors).flatten.group_by(&:to_s).map{|k,v| [k,v.count]}
|
71
79
|
)
|
72
80
|
end
|
81
|
+
|
82
|
+
it "returns filtered tag cloud for tag_name with prepended scope" do
|
83
|
+
expect(User.where('tag like ?', 'bl%').colors_cloud).to match_array(
|
84
|
+
[@user1,@user2,@user3].map(&:colors).flatten.group_by(&:to_s).map{|k,v| [k,v.count]}.select{|name,count| name.start_with? 'bl'}
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "returns filtered tag cloud for tag_name with prepended scope and block" do
|
89
|
+
expect(User.where('tag like ?', 'bl%').colors_cloud{where(name: ["Ken", "Joe"])}).to match_array(
|
90
|
+
[@user2,@user3].map(&:colors).flatten.group_by(&:to_s).map{|k,v| [k,v.count]}.select{|name,count| name.start_with? 'bl'}
|
91
|
+
)
|
92
|
+
end
|
73
93
|
end
|
74
94
|
|
75
95
|
describe "with complex scope" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts-as-taggable-array-on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takuya Miyamoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|