Skip to content

Commit 0fefb96

Browse files
committed
Extract Class Step Three
* Move another method * This method requires moving a constant * Also requires changing the view to reference to the new class
1 parent ac01475 commit 0fefb96

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

example_app/app/controllers/invitations_controller.rb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
class InvitationsController < ApplicationController
2-
EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/
3-
42
def new
53
@survey = Survey.find(params[:survey_id])
4+
@survey_inviter = SurveyInviter.new('')
65
end
76

87
def create
@@ -37,11 +36,7 @@ def valid_message?
3736
end
3837

3938
def invalid_recipients
40-
@invalid_recipients ||= recipient_list.map do |item|
41-
unless item.match(EMAIL_REGEX)
42-
item
43-
end
44-
end.compact
39+
@survey_inviter.invalid_recipients
4540
end
4641

4742
def recipient_list

example_app/app/models/survey_inviter.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
11
class SurveyInviter
2+
EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/
3+
24
def initialize(recipients)
35
@recipients = recipients
46
end
57

8+
def invalid_recipients
9+
@invalid_recipients ||= recipient_list.map do |item|
10+
unless item.match(EMAIL_REGEX)
11+
item
12+
end
13+
end.compact
14+
end
15+
616
def recipient_list
717
@recipient_list ||= @recipients.gsub(/\s+/, '').split(/[\n,;]+/)
818
end

example_app/app/views/invitations/new.html.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
<div class="error">Please provide a message</div>
55
<% end %>
66
<%= f.input :recipients, as: :text, input_html: { value: @recipients } %>
7-
<% if @invalid_recipients %>
7+
<% if @survey_inviter.invalid_recipients %>
88
<div class="error">
99
Invalid email addresses:
10-
<%= @invalid_recipients.join(', ') %>
10+
<%= @survey_inviter.invalid_recipients.join(', ') %>
1111
</div>
1212
<% end %>
1313
<%= f.button :submit, value: 'Invite' %>

0 commit comments

Comments
 (0)