acts_as_favoritor 5.0.1 → 5.0.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64b49c4243f1a6d24e08294de2ee32e19f7b9587ed7f796c2d9d335e6083025a
|
4
|
+
data.tar.gz: dc8bc1751b08a7c9837a9a7f1ee1bf4f8059401d11147df8b1c8500fa58151fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb5c2de5270701e94c32b22c703796f309e53db7ad56f55a2171fbe9ebd600f4e7d85084fb5152fbb69539b29ecb0bf9d67f24a6f649ec0818c9089f80c17816
|
7
|
+
data.tar.gz: a58a52e5fa812dcc2e985f9be277663be0dc0d4ee3d90e25db362391132e38185e2fe18de6f3a84811b48565afe6caadaad7b38502d998f293ce1d1a2ddecfa2
|
data/README.md
CHANGED
@@ -4,6 +4,8 @@ acts_as_favoritor is a Rubygem to allow any ActiveRecord model to associate any
|
|
4
4
|
|
5
5
|
You are able to differentiate followers, favorites, watchers, votes and whatever else you can imagine through a single relationship. This is accomplished by a double polymorphic relationship on the Favorite model. There is also built in support for blocking/un-blocking favorite records as well as caching.
|
6
6
|
|
7
|
+
[This Medium article](https://medium.com/swlh/add-dynamic-like-dislike-buttons-to-your-rails-6-application-ccce8a234c43) gives a good introduction to this gem.
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
You can add acts_as_favoritor to your `Gemfile` with:
|
@@ -222,6 +224,8 @@ book.favoritable_favorite_cache # => 1
|
|
222
224
|
|
223
225
|
**Note:** These methods are available for every scope you are using.
|
224
226
|
|
227
|
+
The total counts all favorites that were recorded, while the score factors in favorites that were removed. In most use cases the score is the most useful.
|
228
|
+
|
225
229
|
## Configuration
|
226
230
|
|
227
231
|
You can configure acts_as_favoritor by passing a block to `configure`. This can be done in `config/initializers/acts_as_favoritor.rb`:
|
@@ -262,7 +266,7 @@ We warmly welcome everyone who is intersted in contributing. Please reference ou
|
|
262
266
|
|
263
267
|
## Releases
|
264
268
|
|
265
|
-
[Here](https://github.com/jonhue/acts_as_favoritor/releases) you can find details on all past releases. Unreleased breaking changes that are on the current
|
269
|
+
[Here](https://github.com/jonhue/acts_as_favoritor/releases) you can find details on all past releases. Unreleased breaking changes that are on the current `main` can be found [here](CHANGELOG.md).
|
266
270
|
|
267
271
|
acts_as_favoritor follows Semantic Versioning 2.0 as defined at http://semver.org. Reference our [security policy](SECURITY.md).
|
268
272
|
|
@@ -271,6 +275,6 @@ acts_as_favoritor follows Semantic Versioning 2.0 as defined at http://semver.or
|
|
271
275
|
1. Review breaking changes and deprecations in `CHANGELOG.md`.
|
272
276
|
1. Change the gem version in `lib/acts_as_favoritor/version.rb`.
|
273
277
|
1. Reset `CHANGELOG.md`.
|
274
|
-
1. Create a pull request to merge the changes into `
|
275
|
-
1. After the pull request was merged, create a new release listing the breaking changes and commits on `
|
278
|
+
1. Create a pull request to merge the changes into `main`.
|
279
|
+
1. After the pull request was merged, create a new release listing the breaking changes and commits on `main` since the last release.
|
276
280
|
2. The release workflow will publish the gem to RubyGems.
|
@@ -38,13 +38,11 @@ module ActsAsFavoritor
|
|
38
38
|
end
|
39
39
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
40
40
|
|
41
|
-
# rubocop:disable Style/OptionalBooleanParameter
|
42
41
|
def respond_to_missing?(method, include_private = false)
|
43
42
|
super || method.to_s[/(.+)_favoritors/] ||
|
44
43
|
method.to_s[/favoritable_(.+)_score/] ||
|
45
44
|
method.to_s[/favoritable_(.+)_total/]
|
46
45
|
end
|
47
|
-
# rubocop:enable Style/OptionalBooleanParameter
|
48
46
|
|
49
47
|
def favoritors(scope: ActsAsFavoritor.configuration.default_scope,
|
50
48
|
scopes: nil)
|
@@ -12,11 +12,9 @@ module ActsAsFavoritor
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
# rubocop:disable Style/OptionalBooleanParameter
|
16
15
|
def respond_to_missing?(method, include_private = false)
|
17
16
|
super || method.to_s[/(.+)_list/]
|
18
17
|
end
|
19
|
-
# rubocop:enable Style/OptionalBooleanParameter
|
20
18
|
|
21
19
|
def for_favoritor(favoritor)
|
22
20
|
where(
|
@@ -38,13 +38,11 @@ module ActsAsFavoritor
|
|
38
38
|
end
|
39
39
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
40
40
|
|
41
|
-
# rubocop:disable Style/OptionalBooleanParameter
|
42
41
|
def respond_to_missing?(method, include_private = false)
|
43
42
|
super || method.to_s[/favorited_(.+)/] ||
|
44
43
|
method.to_s[/favoritor_(.+)_score/] ||
|
45
44
|
method.to_s[/favoritor_(.+)_total/]
|
46
45
|
end
|
47
|
-
# rubocop:enable Style/OptionalBooleanParameter
|
48
46
|
|
49
47
|
def favorite(favoritable,
|
50
48
|
scope: ActsAsFavoritor.configuration.default_scope,
|
@@ -52,10 +50,10 @@ module ActsAsFavoritor
|
|
52
50
|
self.class.build_result_for_scopes(scopes || scope) do |s|
|
53
51
|
return nil if self == favoritable
|
54
52
|
|
53
|
+
result = favorites.for_favoritable(favoritable).send("#{s}_list")
|
54
|
+
.first_or_create!
|
55
55
|
inc_cache(favoritable, s) if ActsAsFavoritor.configuration.cache
|
56
|
-
|
57
|
-
favorites.for_favoritable(favoritable).send("#{s}_list")
|
58
|
-
.first_or_create!
|
56
|
+
result
|
59
57
|
end
|
60
58
|
end
|
61
59
|
|
@@ -66,8 +64,9 @@ module ActsAsFavoritor
|
|
66
64
|
favorite_record = get_favorite(favoritable, s)
|
67
65
|
return nil unless favorite_record.present?
|
68
66
|
|
67
|
+
result = favorite_record.destroy!
|
69
68
|
dec_cache(favoritable, s) if ActsAsFavoritor.configuration.cache
|
70
|
-
|
69
|
+
result
|
71
70
|
end
|
72
71
|
end
|
73
72
|
|
@@ -18,6 +18,9 @@ class ActsAsFavoritorMigration < ActiveRecord::Migration<%= migration_version %>
|
|
18
18
|
add_index :favorites,
|
19
19
|
['favoritable_id', 'favoritable_type'],
|
20
20
|
name: 'fk_favoritables'
|
21
|
+
add_index :favorites,
|
22
|
+
['favoritable_id', 'favoritor_id', 'favoritable_type'],
|
23
|
+
name: 'uniq_favorites__and_favoritables', unique: true
|
21
24
|
end
|
22
25
|
|
23
26
|
def self.down
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_favoritor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Hübotter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -128,7 +128,7 @@ description: acts_as_favoritor is a Rubygem to allow any ActiveRecord model to a
|
|
128
128
|
and whatever else you can imagine through a single relationship. This is accomplished
|
129
129
|
by a double polymorphic relationship on the Favorite model. There is also built
|
130
130
|
in support for blocking/un-blocking favorite records as well as caching.
|
131
|
-
email:
|
131
|
+
email: jonas.huebotter@gmail.com
|
132
132
|
executables: []
|
133
133
|
extensions: []
|
134
134
|
extra_rdoc_files: []
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
169
|
+
rubygems_version: 3.2.22
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: A Rubygem to add Favorite, Follow, Vote, etc. functionality to ActiveRecord
|