webring-rails 1.7.3 → 1.7.4
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: b3841de2893a8fd2b1ee27cf90b95bcb095ddebb266fa47f79a9b7c845b1e26a
|
4
|
+
data.tar.gz: 58c76857005b4cd7639f388f3426f10fe68b4a62dbe2f593b587b81b3fcc9d83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f65ae49b0328ff8c9256d1dbfc1e94dd05e21592a4be6f9eaf917b1755d888c6947ba78079181583a321f9aef89f493b98b415ee6a06775eb038b302ff7fd131
|
7
|
+
data.tar.gz: 6f0f3161a267c31e139d538886f0a89bb5a18e951279f17ce8c5de48e52fe6c2b9fdd123f4f22d19e3d0e1503f99ca8aed4178bd4b83fc62f5b5e995df75104c
|
@@ -31,29 +31,29 @@ module Webring
|
|
31
31
|
# PATCH/PUT /webring/members/1
|
32
32
|
def update
|
33
33
|
if member.update(member_params)
|
34
|
-
|
34
|
+
handle_update_success
|
35
35
|
else
|
36
|
-
|
36
|
+
handle_update_error
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
# DELETE /webring/members/1
|
41
41
|
def destroy
|
42
|
-
member.destroy
|
42
|
+
member.destroy!
|
43
43
|
|
44
44
|
redirect_to admin_panel_members_url, notice: 'Member was successfully destroyed.'
|
45
45
|
end
|
46
46
|
|
47
47
|
private
|
48
48
|
|
49
|
-
def
|
49
|
+
def handle_update_success
|
50
50
|
respond_to do |format|
|
51
51
|
format.html { redirect_to admin_panel_member_path(member), notice: 'Member was successfully updated.' }
|
52
52
|
format.json { head :ok }
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
56
|
+
def handle_update_error
|
57
57
|
respond_to do |format|
|
58
58
|
format.html { render :edit, status: :unprocessable_entity }
|
59
59
|
format.json { render json: { status: 'error', errors: member.errors }, status: :unprocessable_entity }
|
@@ -61,7 +61,7 @@ module Webring
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def members
|
64
|
-
@members ||= Member.
|
64
|
+
@members ||= Member.order(created_at: :desc)
|
65
65
|
end
|
66
66
|
|
67
67
|
def member
|
@@ -5,50 +5,46 @@ module Webring
|
|
5
5
|
# If current member is the last, return the first member (ring concept)
|
6
6
|
def find_next(source_member_uid)
|
7
7
|
source_member = active.find_by(uid: source_member_uid)
|
8
|
-
return
|
8
|
+
return first_active_member unless source_member
|
9
9
|
|
10
|
-
find_next_active_member(source_member) ||
|
10
|
+
find_next_active_member(source_member) || first_active_member
|
11
11
|
end
|
12
12
|
|
13
13
|
# Find the previous member in the webring before the current one
|
14
14
|
# If current member is the first, return the last member (ring concept)
|
15
15
|
def find_previous(source_member_uid)
|
16
16
|
source_member = active.find_by(uid: source_member_uid)
|
17
|
-
return
|
17
|
+
return last_active_member unless source_member
|
18
18
|
|
19
|
-
find_previous_active_member(source_member) ||
|
19
|
+
find_previous_active_member(source_member) || last_active_member
|
20
20
|
end
|
21
21
|
|
22
22
|
# Find a random member, excluding the current one if provided
|
23
23
|
# If current member is the only one, return it
|
24
24
|
def find_random(source_member_uid: nil)
|
25
|
-
|
25
|
+
scope = active
|
26
|
+
scope = scope.where.not(uid: source_member_uid) if source_member_uid.present?
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
return scope.order('RANDOM()').first if scope.exists?
|
29
|
+
return active.find_by(uid: source_member_uid) if source_member_uid.present?
|
29
30
|
|
30
|
-
|
31
|
-
excluded_scope.order('RANDOM()').first
|
32
|
-
else
|
33
|
-
# if only one active member exists (the current one), return it
|
34
|
-
active.find_by(uid: source_member_uid)
|
35
|
-
end
|
31
|
+
nil
|
36
32
|
end
|
37
33
|
|
38
34
|
private
|
39
35
|
|
40
|
-
def
|
41
|
-
active.order(created_at
|
36
|
+
def first_active_member
|
37
|
+
@first_active_member ||= active.order(:created_at).first
|
42
38
|
end
|
43
39
|
|
44
|
-
def
|
45
|
-
active.order(created_at: :desc).first
|
40
|
+
def last_active_member
|
41
|
+
@last_active_member ||= active.order(created_at: :desc).first
|
46
42
|
end
|
47
43
|
|
48
44
|
def find_next_active_member(source_member)
|
49
45
|
active
|
50
46
|
.where('created_at > ?', source_member.created_at)
|
51
|
-
.order(created_at
|
47
|
+
.order(:created_at)
|
52
48
|
.first
|
53
49
|
end
|
54
50
|
|
@@ -46,19 +46,19 @@ module Webring
|
|
46
46
|
{ line: 'class Member < ApplicationRecord', inject_options: { after: "class Member < ApplicationRecord\n" } }
|
47
47
|
]
|
48
48
|
|
49
|
-
|
50
|
-
content = File.read(member_model_path)
|
51
|
-
options = inject_conditions.find { |condition| content.include?(condition[:line]) }&.fetch(:inject_options)
|
52
|
-
return if options.nil? || options.empty?
|
49
|
+
return unless File.exist?(member_model_path)
|
53
50
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
51
|
+
content = File.read(member_model_path)
|
52
|
+
options = inject_conditions.find { |condition| content.include?(condition[:line]) }&.fetch(:inject_options)
|
53
|
+
return if options.blank?
|
54
|
+
|
55
|
+
inject_into_file member_model_path, **options do
|
56
|
+
" belongs_to :membership_request,\n" \
|
57
|
+
" class_name: 'Webring::MembershipRequest',\n" \
|
58
|
+
" foreign_key: :webring_membership_request_id,\n" \
|
59
|
+
" optional: true,\n" \
|
60
|
+
" inverse_of: :member\n" \
|
61
|
+
"\n"
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
data/lib/webring/version.rb
CHANGED