Skip to content

Commit b434954

Browse files
committed
Extract Class Step Four
* Move another method * Wrap up compound condition * Privatize methods only used internally in new class
1 parent 0fefb96 commit b434954

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

example_app/app/controllers/invitations_controller.rb

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
class InvitationsController < ApplicationController
22
def new
33
@survey = Survey.find(params[:survey_id])
4-
@survey_inviter = SurveyInviter.new('')
4+
@survey_inviter = SurveyInviter.new('', '')
55
end
66

77
def create
88
@survey = Survey.find(params[:survey_id])
9-
@survey_inviter = SurveyInviter.new(recipients)
10-
if valid_recipients? && valid_message?
9+
@survey_inviter = SurveyInviter.new(message, recipients)
10+
if @survey_inviter.valid?
1111
recipient_list.each do |email|
1212
invitation = Invitation.create(
1313
survey: @survey,
@@ -27,14 +27,6 @@ def create
2727

2828
private
2929

30-
def valid_recipients?
31-
invalid_recipients.empty?
32-
end
33-
34-
def valid_message?
35-
message.present?
36-
end
37-
3830
def invalid_recipients
3931
@survey_inviter.invalid_recipients
4032
end

example_app/app/models/survey_inviter.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
class SurveyInviter
22
EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/
33

4-
def initialize(recipients)
4+
def initialize(message, recipients)
5+
@message = message
56
@recipients = recipients
67
end
78

9+
def valid?
10+
valid_message? && valid_recipients?
11+
end
12+
813
def invalid_recipients
914
@invalid_recipients ||= recipient_list.map do |item|
1015
unless item.match(EMAIL_REGEX)
@@ -16,4 +21,14 @@ def invalid_recipients
1621
def recipient_list
1722
@recipient_list ||= @recipients.gsub(/\s+/, '').split(/[\n,;]+/)
1823
end
24+
25+
private
26+
27+
def valid_message?
28+
@message.present?
29+
end
30+
31+
def valid_recipients?
32+
invalid_recipients.empty?
33+
end
1934
end

0 commit comments

Comments
 (0)