acts_as_favoritor 4.0.1 → 4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -25
- data/lib/acts_as_favoritor/favoritable.rb +5 -2
- data/lib/acts_as_favoritor/favoritor.rb +9 -6
- data/lib/acts_as_favoritor/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba4bae7bff5166a5903eccb9ed03fdc8905844309dac8b509d805dc945f09a4e
|
4
|
+
data.tar.gz: 61061b39d5f29094fe329c00aac91df4988667522c945f859c4762381da4a117
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb97712eb98769614cd99a910633ec0b397feec7d55282f42884915c8246732f0b1b611ace2dae13c5360c998ba49f3ac02b0c9a8a7421b9ac2a3e57714493e0
|
7
|
+
data.tar.gz: 726d2a2aec78589821dabc017d5f53b8a142d961a3caa21eae436d5d6cbda4b231d613305ae8099aae4340addc09be508b68d09479b104d199c3fc586ec1c0cc
|
data/README.md
CHANGED
@@ -92,48 +92,44 @@ user.favorite(book)
|
|
92
92
|
# `user` removes `book` from favorites.
|
93
93
|
user.unfavorite(book)
|
94
94
|
|
95
|
-
# Whether `user` has marked `book` as his favorite.
|
95
|
+
# Whether `user` has marked `book` as his favorite.
|
96
96
|
user.favorited?(book)
|
97
97
|
|
98
|
-
#
|
98
|
+
# Returns an Active Record relation of `user`'s `Favorite` records that have not been blocked.
|
99
99
|
user.all_favorites
|
100
100
|
|
101
|
-
# Returns all favorited objects of `user
|
101
|
+
# Returns an array of all unblocked favorited objects of `user`. This can be a collection of different object types, e.g.: `User`, `Book`.
|
102
102
|
user.all_favorited
|
103
103
|
|
104
|
-
# Returns an
|
104
|
+
# Returns an Active Record relation of `Favorite` records where the `favoritable_type` is `Book`.
|
105
105
|
user.favorites_by_type('Book')
|
106
106
|
|
107
|
-
# Returns an
|
107
|
+
# Returns an Active Record relation of all favorited objects of `user` where `favoritable_type` is 'Book'.
|
108
108
|
user.favorited_by_type('Book')
|
109
109
|
|
110
|
-
# Returns the exact same
|
110
|
+
# Returns the exact same as `user.favorited_by_type('User')`.
|
111
111
|
user.favorited_users
|
112
112
|
|
113
|
-
# Whether `user` has been blocked by `book`.
|
113
|
+
# Whether `user` has been blocked by `book`.
|
114
114
|
user.blocked_by?(book)
|
115
115
|
|
116
|
-
# Returns an array
|
116
|
+
# Returns an array of all favoritables that blocked `user`.
|
117
117
|
user.blocked_by
|
118
118
|
```
|
119
119
|
|
120
|
-
These methods take an optional hash parameter of ActiveRecord options (`:limit`, `:order`, etc...)
|
121
|
-
|
122
|
-
favorites_by_type, all_favorites, all_favorited, favorited_by_type
|
123
|
-
|
124
120
|
### `acts_as_favoritable` methods
|
125
121
|
|
126
122
|
```ruby
|
127
123
|
# Returns all favoritors of a model that `acts_as_favoritable`
|
128
124
|
book.favoritors
|
129
125
|
|
130
|
-
# Returns an
|
126
|
+
# Returns an Active Record relation of records with type `User` following `book`.
|
131
127
|
book.favoritors_by_type('User')
|
132
128
|
|
133
|
-
# Returns the exact same as `book.favoritors_by_type
|
129
|
+
# Returns the exact same as `book.favoritors_by_type('User')`.
|
134
130
|
book.user_favoritors
|
135
131
|
|
136
|
-
# Whether `book` has been favorited by `user`.
|
132
|
+
# Whether `book` has been favorited by `user`.
|
137
133
|
book.favorited_by?(user)
|
138
134
|
|
139
135
|
# Block a favoritor
|
@@ -142,30 +138,26 @@ book.block(user)
|
|
142
138
|
# Unblock a favoritor
|
143
139
|
book.unblock(user)
|
144
140
|
|
145
|
-
# Whether `book` has blocked `user` as favoritor.
|
141
|
+
# Whether `book` has blocked `user` as favoritor.
|
146
142
|
book.blocked?(user)
|
147
143
|
|
148
|
-
# Returns an array
|
144
|
+
# Returns an array of all blocked favoritors.
|
149
145
|
book.blocked
|
150
146
|
```
|
151
147
|
|
152
|
-
These methods take an optional hash parameter of ActiveRecord options (`:limit`, `:order`, etc...)
|
153
|
-
|
154
|
-
favoritors_by_type, favoritors, blocks
|
155
|
-
|
156
148
|
### `Favorite` model
|
157
149
|
|
158
150
|
```ruby
|
159
|
-
# Returns all `Favorite` records where `blocked` is `false`.
|
151
|
+
# Returns an Active Record relation of all `Favorite` records where `blocked` is `false`.
|
160
152
|
Favorite.unblocked
|
161
153
|
|
162
|
-
# Returns all `Favorite` records where `blocked` is `true`.
|
154
|
+
# Returns an Active Record relation of all `Favorite` records where `blocked` is `true`.
|
163
155
|
Favorite.blocked
|
164
156
|
|
165
|
-
# Returns all favorites of `user`, including those who were blocked.
|
157
|
+
# Returns an Active Record relation of all favorites of `user`, including those who were blocked.
|
166
158
|
Favorite.for_favoritor(user)
|
167
159
|
|
168
|
-
# Returns all favoritors of `book`, including those who were blocked.
|
160
|
+
# Returns an Active Record relation of all favoritors of `book`, including those who were blocked.
|
169
161
|
Favorite.for_favoritable(book)
|
170
162
|
```
|
171
163
|
|
@@ -55,8 +55,11 @@ module ActsAsFavoritor
|
|
55
55
|
scopes: [ActsAsFavoritor.configuration
|
56
56
|
.default_scope])
|
57
57
|
self.class.build_result_for_scopes scopes do |scope|
|
58
|
-
|
59
|
-
|
58
|
+
favoritor_type.constantize.includes(:favorites)
|
59
|
+
.where(favorites: {
|
60
|
+
blocked: false, favoritable_id: id,
|
61
|
+
favoritable_type: self.class.name, scope: scope
|
62
|
+
})
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
@@ -49,7 +49,7 @@ module ActsAsFavoritor
|
|
49
49
|
self.class.build_result_for_scopes scopes do |scope|
|
50
50
|
return nil if self == favoritable
|
51
51
|
|
52
|
-
inc_cache(scope) if ActsAsFavoritor.configuration.cache
|
52
|
+
inc_cache(favoritable, scope) if ActsAsFavoritor.configuration.cache
|
53
53
|
|
54
54
|
favorites.for_favoritable(favoritable).send("#{scope}_list")
|
55
55
|
.first_or_create!
|
@@ -62,7 +62,7 @@ module ActsAsFavoritor
|
|
62
62
|
favorite_record = get_favorite(favoritable, scope)
|
63
63
|
return nil unless favorite_record.present?
|
64
64
|
|
65
|
-
dec_cache(scope) if ActsAsFavoritor.configuration.cache
|
65
|
+
dec_cache(favoritable, scope) if ActsAsFavoritor.configuration.cache
|
66
66
|
favorite_record.destroy!
|
67
67
|
end
|
68
68
|
end
|
@@ -101,8 +101,11 @@ module ActsAsFavoritor
|
|
101
101
|
scopes: [ActsAsFavoritor.configuration
|
102
102
|
.default_scope])
|
103
103
|
self.class.build_result_for_scopes scopes do |scope|
|
104
|
-
|
105
|
-
|
104
|
+
favoritable_type.constantize.includes(:favorited)
|
105
|
+
.where(favorites: {
|
106
|
+
blocked: false, favoritor_id: id,
|
107
|
+
favoritor_type: self.class.name, scope: scope
|
108
|
+
})
|
106
109
|
end
|
107
110
|
end
|
108
111
|
|
@@ -129,7 +132,7 @@ module ActsAsFavoritor
|
|
129
132
|
end
|
130
133
|
|
131
134
|
# rubocop:disable Metrics/AbcSize
|
132
|
-
def inc_cache(scope)
|
135
|
+
def inc_cache(favoritable, scope)
|
133
136
|
favoritor_score[scope] = (favoritor_score[scope] || 0) + 1
|
134
137
|
favoritor_total[scope] = (favoritor_total[scope] || 0) + 1
|
135
138
|
save!
|
@@ -141,7 +144,7 @@ module ActsAsFavoritor
|
|
141
144
|
favoritable.save!
|
142
145
|
end
|
143
146
|
|
144
|
-
def dec_cache(scope)
|
147
|
+
def dec_cache(favoritable, scope)
|
145
148
|
favoritor_score[scope] = (favoritor_score[scope] || 0) - 1
|
146
149
|
favoritor_score.delete(scope) unless favoritor_score[scope].positive?
|
147
150
|
save!
|
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: 4.0.
|
4
|
+
version: 4.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: 2019-05-
|
11
|
+
date: 2019-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rails
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|