Skip to content

Commit c22927a

Browse files
authored
Merge pull request #942 from amatsuda/teammates_events
Define Teammate state changing methods as Enum events
2 parents ef37ae4 + 7760ae2 commit c22927a

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ GEM
428428
snaky_hash (2.0.1)
429429
hashie
430430
version_gem (~> 1.1, >= 1.1.1)
431-
stateful_enum (0.7.0)
431+
stateful_enum (0.8.0)
432432
stringio (3.2.0)
433433
temple (0.10.4)
434434
thor (1.4.0)

app/models/teammate.rb

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,25 @@ class Teammate < ApplicationRecord
1212
IN_APP_ONLY => 'In App Only'
1313
}
1414

15-
enum :state, {pending: 'pending', accepted: 'accepted', declined: 'declined'}
15+
enum :state, {pending: 'pending', accepted: 'accepted', declined: 'declined'}, default: :pending do
16+
event :accept do
17+
transition :pending => :accepted
18+
19+
before do |user|
20+
self.user = user
21+
self.accepted_at = Time.current
22+
end
23+
end
24+
25+
event :decline do
26+
transition :pending => :declined
27+
28+
before do
29+
self.declined_at = Time.current
30+
end
31+
end
32+
33+
end
1634

1735
belongs_to :event
1836
belongs_to :user, optional: true
@@ -36,19 +54,6 @@ class Teammate < ApplicationRecord
3654

3755
scope :all_emails, -> { where(notification_preference: ALL) }
3856

39-
def accept(user)
40-
self.user = user
41-
self.accepted_at = Time.current
42-
self.state = :accepted
43-
save
44-
end
45-
46-
def decline
47-
self.declined_at = Time.current
48-
self.state = :declined
49-
save
50-
end
51-
5257
def name
5358
user ? user.name : ""
5459
end
@@ -59,7 +64,6 @@ def ratings_count(current_event)
5964

6065
def invite
6166
self.token = Digest::SHA1.hexdigest(Time.current.to_s + email + rand(1000).to_s)
62-
self.state = :pending
6367
self.invited_at = Time.current
6468
save
6569
end

0 commit comments

Comments
 (0)