activerecord-precounter 0.3.1 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -0
- data/activerecord-precounter.gemspec +1 -1
- data/lib/active_record/precounter.rb +5 -3
- data/lib/active_record/precounter/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5bf25aa0550622438acc6518baeb060cc7a8b3efb256d398aae6e10575654f8
|
4
|
+
data.tar.gz: 51959a62fc7b3bee6bed30512711d7606b0ed3ac756b50fc51ad91ca42ef08ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8591c0865cbf9714089fa3ef8230a6cbe09248e49cff8bdbc6dba1dc74c89a9cb2d1cd3f3e5c13dc33e15c9c4b8079f626e790e86ca211ab33b163b0942ffc90
|
7
|
+
data.tar.gz: b0286be1b1273b5f53390c022dad711cde8aeb41fdd546619da928fbfc18885a2a3feb7e6c2d54a5fe65321141729dc203c8388156241c6bec7ae7e2cb81e257
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
## v0.3.2
|
2
|
+
|
3
|
+
* Support primary\_key option of belongs\_to association [#7](https://github.com/k0kubun/activerecord-precounter/pull/7)
|
4
|
+
|
5
|
+
## v0.3.1
|
6
|
+
|
7
|
+
* Fix [#5](https://github.com/k0kubun/activerecord-precounter/pull/5) for ActiveRecord 5.0 (take 3)
|
8
|
+
|
9
|
+
## v0.3.0
|
10
|
+
|
11
|
+
* Fix [#5](https://github.com/k0kubun/activerecord-precounter/pull/5) for ActiveRecord 5.0 (take 2)
|
12
|
+
* [breaking] Drop ActiveRecord 4.2 support
|
13
|
+
|
14
|
+
## v0.2.3
|
15
|
+
|
16
|
+
* Fix count of scoped association [#5](https://github.com/k0kubun/activerecord-precounter/pull/5)
|
17
|
+
|
18
|
+
## v0.2.2
|
19
|
+
|
20
|
+
* Fix unexpected subquery [#4](https://github.com/k0kubun/activerecord-precounter/pull/5)
|
21
|
+
|
22
|
+
## v0.2.1
|
23
|
+
|
24
|
+
* Add support for counting scoped association
|
25
|
+
* Return empty array when target records don't exist
|
26
|
+
|
27
|
+
## v0.2.0
|
28
|
+
|
29
|
+
* [breaking] Completely change interface
|
30
|
+
|
31
|
+
## v0.1.0
|
32
|
+
|
33
|
+
* Initial release
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'activerecord', '>= 5'
|
25
25
|
spec.add_development_dependency 'bundler'
|
26
26
|
spec.add_development_dependency 'mysql2'
|
27
|
-
spec.add_development_dependency '
|
27
|
+
spec.add_development_dependency 'pg'
|
28
28
|
spec.add_development_dependency 'rake'
|
29
29
|
spec.add_development_dependency 'rspec'
|
30
30
|
spec.add_development_dependency 'sqlite3'
|
@@ -26,21 +26,23 @@ module ActiveRecord
|
|
26
26
|
)
|
27
27
|
end
|
28
28
|
|
29
|
+
primary_key = reflection.inverse_of.association_primary_key.to_sym
|
30
|
+
|
29
31
|
count_by_id = if reflection.has_scope?
|
30
32
|
# ActiveRecord 5.0 unscopes #scope_for argument, so adding #where outside that:
|
31
33
|
# https://github.com/rails/rails/blob/v5.0.7/activerecord/lib/active_record/reflection.rb#L314-L316
|
32
|
-
reflection.scope_for(reflection.klass.unscoped).where(reflection.inverse_of.name => records.map(
|
34
|
+
reflection.scope_for(reflection.klass.unscoped).where(reflection.inverse_of.name => records.map(&primary_key)).group(
|
33
35
|
reflection.inverse_of.foreign_key
|
34
36
|
).count
|
35
37
|
else
|
36
|
-
reflection.klass.where(reflection.inverse_of.name => records.map(
|
38
|
+
reflection.klass.where(reflection.inverse_of.name => records.map(&primary_key)).group(
|
37
39
|
reflection.inverse_of.foreign_key
|
38
40
|
).count
|
39
41
|
end
|
40
42
|
|
41
43
|
writer = define_count_accessor(records.first, association_name)
|
42
44
|
records.each do |record|
|
43
|
-
record.public_send(writer, count_by_id.fetch(record.
|
45
|
+
record.public_send(writer, count_by_id.fetch(record.public_send(primary_key), 0))
|
44
46
|
end
|
45
47
|
end
|
46
48
|
records
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-precounter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: pg
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- ".gitignore"
|
119
119
|
- ".rspec"
|
120
120
|
- ".travis.yml"
|
121
|
+
- CHANGELOG.md
|
121
122
|
- Gemfile
|
122
123
|
- LICENSE.txt
|
123
124
|
- README.md
|