has_friendship 1.1.8 → 1.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
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 13eb70587325d65d16b6ddb7a5d2d1c31ea7820363cf263eb4519b6a6a0ae087
|
|
4
|
+
data.tar.gz: 2589815aa21a588236ab240f10b29b68e8fbb4a99c93dcdda1d49a47ed44fdba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 00366d386441bf4bbfd90ffc527e563d4296dd40d1597e97de8a3db93c47eb88745014859aa73af25ce5cea23ed0d4ccb1e78ec38b3fa0bb2d0fcbd4827f285b
|
|
7
|
+
data.tar.gz: 51ef8240e5efb99bf76d0d0d731d71932c8062e51ac84ce24d753001b22c16f0c4262f567b6f17adc2a158e6ea0daaf62ae4897526b235354ea4487c01ba5d57
|
|
@@ -10,7 +10,16 @@ AddUniqueIndexToFriendships.class_eval do
|
|
|
10
10
|
def self.up
|
|
11
11
|
return if index_exists?(:friendships, [:friendable_id, :friend_id])
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
options = { unique: true }
|
|
14
|
+
|
|
15
|
+
adapter_name = connection.adapter_name.downcase
|
|
16
|
+
if adapter_name.include?('mysql') || adapter_name.include?('postgres')
|
|
17
|
+
adapter_name.include?('postgis')
|
|
18
|
+
# These are the only DB adapters that support an index algorithm.
|
|
19
|
+
options[:algorithm] = :concurrently
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
add_index :friendships, [:friendable_id, :friend_id], **options
|
|
14
23
|
end
|
|
15
24
|
|
|
16
25
|
def self.down
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
module HasFriendship
|
|
2
2
|
class Engine < ::Rails::Engine
|
|
3
|
+
# Don't bother with isolate_namespace; we're only working with
|
|
4
|
+
# one table here.
|
|
5
|
+
#
|
|
3
6
|
# isolate_namespace HasFriendship
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# NOTE ABOUT DATABASE MIGRATIONS
|
|
10
|
+
#
|
|
11
|
+
# This Gem uses the `has_friendship:install:migrations` Rake task,
|
|
12
|
+
# which is automatically provided by Rails::Engine. That Rake task
|
|
13
|
+
# will copy the migration files from the Gem's db/migrate/
|
|
14
|
+
# directory into the host app (with newly-generated timestamps).
|
|
15
|
+
#
|
|
16
|
+
# We use this `install:migrations` approach to provide developer
|
|
17
|
+
# control. The application developer must be allowed to inspect
|
|
18
|
+
# and modify the migration files (e.g. to change the foreign key
|
|
19
|
+
# type from INTEGER to a UUID) before running `db:migrate`.
|
|
20
|
+
#
|
|
21
|
+
# Do not use the Rails Engine's `initializer :append_migrations`
|
|
22
|
+
# feature in this Gem. Otherwise, the application developer would
|
|
23
|
+
# loose that control.
|
|
24
|
+
#
|
|
25
|
+
|
|
4
26
|
end
|
|
5
27
|
end
|
|
@@ -77,12 +77,12 @@ module HasFriendship
|
|
|
77
77
|
|
|
78
78
|
def block_friend(friend)
|
|
79
79
|
on_relation_with(friend) do |one, other|
|
|
80
|
-
HasFriendship::Friendship.find_unblocked_friendship(one, other).
|
|
80
|
+
HasFriendship::Friendship.find_unblocked_friendship(one, other).block_by(self)
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def unblock_friend(friend)
|
|
85
|
-
return unless has_blocked(friend)
|
|
85
|
+
return unless has_blocked?(friend)
|
|
86
86
|
on_relation_with(friend) do |one, other|
|
|
87
87
|
HasFriendship::Friendship.find_blocked_friendship(one, other).destroy
|
|
88
88
|
end
|
|
@@ -101,7 +101,7 @@ module HasFriendship
|
|
|
101
101
|
|
|
102
102
|
private
|
|
103
103
|
|
|
104
|
-
def has_blocked(friend)
|
|
104
|
+
def has_blocked?(friend)
|
|
105
105
|
HasFriendship::Friendship.find_one_side(self, friend).blocker_id == self.id
|
|
106
106
|
end
|
|
107
107
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
module HasFriendship
|
|
2
|
+
FRIENDSHIP_ENUM_VALUES = { pending: 0, requested: 1, accepted: 2, blocked: 3 }
|
|
3
|
+
|
|
2
4
|
class Friendship < ActiveRecord::Base
|
|
3
5
|
validate :satisfy_custom_conditions
|
|
4
6
|
|
|
@@ -10,8 +12,20 @@ module HasFriendship
|
|
|
10
12
|
friendable.try(:on_friendship_destroyed, record)
|
|
11
13
|
end
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
attr_reader :status_was
|
|
16
|
+
|
|
17
|
+
if Rails.gem_version >= Gem::Version.new('7.0')
|
|
18
|
+
stats_def = [ :status, FRIENDSHIP_ENUM_VALUES ]
|
|
19
|
+
else
|
|
20
|
+
stats_def = [ status: FRIENDSHIP_ENUM_VALUES ]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
enum *stats_def do
|
|
14
24
|
event :accept do
|
|
25
|
+
before do
|
|
26
|
+
@status_was = self.status
|
|
27
|
+
end
|
|
28
|
+
|
|
15
29
|
transition [:pending, :requested] => :accepted
|
|
16
30
|
|
|
17
31
|
after do
|
|
@@ -20,10 +34,6 @@ module HasFriendship
|
|
|
20
34
|
end
|
|
21
35
|
|
|
22
36
|
event :block do
|
|
23
|
-
before do
|
|
24
|
-
self.blocker_id = self.friendable.id
|
|
25
|
-
end
|
|
26
|
-
|
|
27
37
|
after do
|
|
28
38
|
friendable.on_friendship_blocked(self)
|
|
29
39
|
end
|
|
@@ -31,6 +41,11 @@ module HasFriendship
|
|
|
31
41
|
end
|
|
32
42
|
end
|
|
33
43
|
|
|
44
|
+
def block_by(blocker)
|
|
45
|
+
self.blocker_id = blocker.id
|
|
46
|
+
self.block!
|
|
47
|
+
end
|
|
48
|
+
|
|
34
49
|
def self.relation_attributes(one, other, status: nil)
|
|
35
50
|
attr = {
|
|
36
51
|
friendable_id: one.id,
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: has_friendship
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1
|
|
4
|
+
version: 1.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sung Won Cho
|
|
8
|
-
|
|
8
|
+
- Paul Walrath
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -17,9 +17,6 @@ dependencies:
|
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: 4.2.0
|
|
20
|
-
- - "<"
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: '6.1'
|
|
23
20
|
type: :runtime
|
|
24
21
|
prerelease: false
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -27,9 +24,6 @@ dependencies:
|
|
|
27
24
|
- - ">="
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
26
|
version: 4.2.0
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '6.1'
|
|
33
27
|
- !ruby/object:Gem::Dependency
|
|
34
28
|
name: activemodel
|
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -37,9 +31,6 @@ dependencies:
|
|
|
37
31
|
- - ">="
|
|
38
32
|
- !ruby/object:Gem::Version
|
|
39
33
|
version: 4.2.0
|
|
40
|
-
- - "<"
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '6.1'
|
|
43
34
|
type: :runtime
|
|
44
35
|
prerelease: false
|
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -47,9 +38,6 @@ dependencies:
|
|
|
47
38
|
- - ">="
|
|
48
39
|
- !ruby/object:Gem::Version
|
|
49
40
|
version: 4.2.0
|
|
50
|
-
- - "<"
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
52
|
-
version: '6.1'
|
|
53
41
|
- !ruby/object:Gem::Dependency
|
|
54
42
|
name: activerecord
|
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -57,9 +45,6 @@ dependencies:
|
|
|
57
45
|
- - ">="
|
|
58
46
|
- !ruby/object:Gem::Version
|
|
59
47
|
version: 4.2.0
|
|
60
|
-
- - "<"
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: '6.1'
|
|
63
48
|
type: :runtime
|
|
64
49
|
prerelease: false
|
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -67,9 +52,6 @@ dependencies:
|
|
|
67
52
|
- - ">="
|
|
68
53
|
- !ruby/object:Gem::Version
|
|
69
54
|
version: 4.2.0
|
|
70
|
-
- - "<"
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: '6.1'
|
|
73
55
|
- !ruby/object:Gem::Dependency
|
|
74
56
|
name: stateful_enum
|
|
75
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -155,7 +137,7 @@ dependencies:
|
|
|
155
137
|
- !ruby/object:Gem::Version
|
|
156
138
|
version: '0'
|
|
157
139
|
- !ruby/object:Gem::Dependency
|
|
158
|
-
name:
|
|
140
|
+
name: coveralls_reborn
|
|
159
141
|
requirement: !ruby/object:Gem::Requirement
|
|
160
142
|
requirements:
|
|
161
143
|
- - ">="
|
|
@@ -196,9 +178,79 @@ dependencies:
|
|
|
196
178
|
- - ">="
|
|
197
179
|
- !ruby/object:Gem::Version
|
|
198
180
|
version: '0'
|
|
199
|
-
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: base64
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: drb
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - ">="
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0'
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - ">="
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: '0'
|
|
209
|
+
- !ruby/object:Gem::Dependency
|
|
210
|
+
name: mutex_m
|
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
|
212
|
+
requirements:
|
|
213
|
+
- - ">="
|
|
214
|
+
- !ruby/object:Gem::Version
|
|
215
|
+
version: '0'
|
|
216
|
+
type: :development
|
|
217
|
+
prerelease: false
|
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
219
|
+
requirements:
|
|
220
|
+
- - ">="
|
|
221
|
+
- !ruby/object:Gem::Version
|
|
222
|
+
version: '0'
|
|
223
|
+
- !ruby/object:Gem::Dependency
|
|
224
|
+
name: benchmark
|
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
|
226
|
+
requirements:
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0'
|
|
230
|
+
type: :development
|
|
231
|
+
prerelease: false
|
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - ">="
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '0'
|
|
237
|
+
- !ruby/object:Gem::Dependency
|
|
238
|
+
name: appraisal
|
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
|
240
|
+
requirements:
|
|
241
|
+
- - ">="
|
|
242
|
+
- !ruby/object:Gem::Version
|
|
243
|
+
version: '0'
|
|
244
|
+
type: :development
|
|
245
|
+
prerelease: false
|
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
247
|
+
requirements:
|
|
248
|
+
- - ">="
|
|
249
|
+
- !ruby/object:Gem::Version
|
|
250
|
+
version: '0'
|
|
200
251
|
email:
|
|
201
252
|
- mikeswcho@gmail.com
|
|
253
|
+
- paul@walrath.ca
|
|
202
254
|
executables: []
|
|
203
255
|
extensions: []
|
|
204
256
|
extra_rdoc_files: []
|
|
@@ -219,7 +271,6 @@ homepage: https://github.com/sungwoncho/has_friendship
|
|
|
219
271
|
licenses:
|
|
220
272
|
- MIT
|
|
221
273
|
metadata: {}
|
|
222
|
-
post_install_message:
|
|
223
274
|
rdoc_options: []
|
|
224
275
|
require_paths:
|
|
225
276
|
- lib
|
|
@@ -234,8 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
234
285
|
- !ruby/object:Gem::Version
|
|
235
286
|
version: '0'
|
|
236
287
|
requirements: []
|
|
237
|
-
rubygems_version: 3.
|
|
238
|
-
signing_key:
|
|
288
|
+
rubygems_version: 3.6.9
|
|
239
289
|
specification_version: 4
|
|
240
290
|
summary: Add social network friendship features to your Active Record models.
|
|
241
291
|
test_files: []
|