Skip to content

Commit c7a61da

Browse files
committed
Replace Subclasses with Strategies: Step Five
* Pass strategy instead of subclass when only the strategy is needed * Don't delegate strategy-specific behavior from subclasses
1 parent 2bce7f7 commit c7a61da

6 files changed

Lines changed: 12 additions & 12 deletions

File tree

example_app/app/models/multiple_choice_question.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ class MultipleChoiceQuestion < Question
33

44
accepts_nested_attributes_for :options, reject_if: :all_blank
55

6-
def options_for_form
7-
submittable.options_for_form
8-
end
9-
106
def submittable
117
MultipleChoiceSubmittable.new(self)
128
end

example_app/app/models/scale_question.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ class ScaleQuestion < Question
22
validates :maximum, presence: true
33
validates :minimum, presence: true
44

5-
def steps
6-
submittable.steps
7-
end
8-
95
def submittable
106
ScaleSubmittable.new(self)
117
end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<%= form.fields_for(:options, question.options_for_form) do |option_fields| -%>
1+
<%= form.fields_for(:options, submittable.options_for_form) do |option_fields| -%>
22
<%= option_fields.input :text, label: 'Option' %>
33
<% end -%>
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<%= simple_form_for question, as: :question, url: url do |form| -%>
22
<%= form.hidden_field :type %>
33
<%= form.input :title %>
4-
<%= render "#{question.to_partial_path}_form", question: question, form: form %>
4+
<%= render(
5+
"#{question.to_partial_path}_form",
6+
submittable: question.submittable,
7+
form: form
8+
) %>
59
<%= form.submit %>
610
<% end -%>

example_app/app/views/scale_questions/_scale_question.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ol>
2-
<% scale_question.steps.each do |step| -%>
2+
<% submittable.steps.each do |step| -%>
33
<li>
44
<%= submission_fields.radio_button :text, step %>
55
<%= submission_fields.label "text_#{step}", label: step %>

example_app/app/views/surveys/show.html.erb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@
2525
<li>
2626
<%= form.fields_for "answers_attributes[#{question.id}]", Answer.new do |submission_fields| -%>
2727
<%= submission_fields.label :text, label: question.title %>
28-
<%= render question, submission_fields: submission_fields %>
28+
<%= render(
29+
question,
30+
submission_fields: submission_fields,
31+
submittable: question.submittable
32+
) %>
2933
<%= link_to 'Edit', edit_question_path(question) %>
3034
<% end -%>
3135
</li>

0 commit comments

Comments
 (0)