Skip to content

Commit 72f387c

Browse files
committed
refactor: use find_or_create_by with block (PR #2558)
Refactored per olleolleolle's suggestion: - Use find_or_create_by(member, invitation) with block for status - Check processed_at instead of persisted? for retry detection - Cleaner, more idiomatic Rails pattern
1 parent c112684 commit 72f387c

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

app/services/invitation_logger.rb

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def log_success(member, invitation = nil)
2323
return unless @log
2424

2525
entry = find_or_build_entry(member, invitation, :success)
26-
return entry if entry.persisted?
26+
return entry if entry.processed_at
2727

2828
entry.assign_attributes(processed_at: Time.current)
2929
save_entry(entry, :success_count)
@@ -33,7 +33,7 @@ def log_failure(member, invitation, error)
3333
return unless @log
3434

3535
entry = find_or_build_entry(member, invitation, :failed)
36-
return entry if entry.persisted?
36+
return entry if entry.processed_at
3737

3838
entry.assign_attributes(
3939
failure_reason: error.message,
@@ -46,7 +46,7 @@ def log_skipped(member, invitation, reason)
4646
return unless @log
4747

4848
entry = find_or_build_entry(member, invitation, :skipped)
49-
return entry if entry.persisted?
49+
return entry if entry.processed_at
5050

5151
entry.assign_attributes(
5252
failure_reason: reason,
@@ -78,14 +78,9 @@ def fail_batch(error)
7878
private
7979

8080
def find_or_build_entry(member, invitation, status)
81-
existing_entry = @log.entries.find_by(member: member, invitation: invitation)
82-
return existing_entry if existing_entry
83-
84-
@log.entries.new(
85-
member: member,
86-
invitation: invitation,
87-
status: status
88-
)
81+
@log.entries.find_or_create_by(member: member, invitation: invitation) do |entry|
82+
entry.status = status
83+
end
8984
end
9085

9186
def save_entry(entry, counter)

0 commit comments

Comments
 (0)