Mission agent step submission nested one-to-one polymorphic association overrride

James Peret 10 years ago
parent
commit
17d81b89e6

+ 9 - 3
app/controllers/missions_controller.rb

@@ -97,9 +97,15 @@ class MissionsController < ApplicationController
97 97
   def step_submission
98 98
     mission = Mission.friendly.find(params[:id])
99 99
     agent = mission.mission_agents.friendly.find(params[:agent])
100
-    submission = StepSubmission.new(step_submission_params)
100
+    submission = StepSubmission.new
101
+    agent.agent_steps.first.step_validations.each do |validation|
102
+      if validation.validation_type == 'ValidationText'
103
+        submission.submission_contents << SubmissionContent.new
104
+        submission.submission_contents.last.build_submission('SubmissionText')
105
+      end
106
+    end
101 107
     respond_to do |format|
102
-      if submission.save
108
+      if submission.update(step_submission_params)
103 109
         format.html { redirect_to mission_agent_details_path(mission, agent), notice: (t 'mission.step_submission_confirmation') }
104 110
         format.json { head :no_content }
105 111
       else
@@ -121,7 +127,7 @@ class MissionsController < ApplicationController
121 127
     end
122 128
     
123 129
     def step_submission_params
124
-      params.require(:step_submission).permit(:agent_step_id, :validated, :validated_by_id, :date_validated, :created_at, :updated_at, :language, :cover_img, :slug, :end_date, :submission_contents_attributes => [:submission_content_id, :submission_type, :created_at, :updated_at, :submission_attributes => [:submission_content_id, :content, :accepted, :validation_id, :created_at, :updated_at]])
130
+      params.require(:step_submission).permit(:agent_step_id, :validated, :validated_by_id, :date_validated, :created_at, :updated_at, :language, :cover_img, :slug, :end_date, :submission_contents_attributes => [:submission_content_id, :submission_type, :created_at, :updated_at])
125 131
     end
126 132
     
127 133
 end

+ 1 - 1
app/models/step_submission.rb

@@ -2,6 +2,6 @@ class StepSubmission < ActiveRecord::Base
2 2
   belongs_to :agent_step  
3 3
   belongs_to :validated_by, :class_name => "User"
4 4
   has_many :submission_contents, :dependent => :destroy
5
-  has_many :submissions, :through => :submission_contents
5
+  has_many :submissions, :through => :submission_content
6 6
   accepts_nested_attributes_for :submission_contents, allow_destroy:true
7 7
 end

+ 8 - 0
app/models/submission_content.rb

@@ -2,4 +2,12 @@ class SubmissionContent < ActiveRecord::Base
2 2
   belongs_to :step_submission
3 3
   belongs_to :submission, polymorphic: true
4 4
   accepts_nested_attributes_for :submission, allow_destroy:true
5
+  
6
+  def build_submission(klass)
7
+    if klass = 'SubmissionText'
8
+      submission = SubmissionText.new
9
+      self.submission_type = klass
10
+    end
11
+    self.submission = submission  
12
+  end
5 13
 end

+ 1 - 0
app/models/submission_text.rb

@@ -1,4 +1,5 @@
1 1
 class SubmissionText < ActiveRecord::Base
2 2
   belongs_to :validation
3 3
   has_one :submission_content, :as => :submission, dependent: :destroy
4
+  accepts_nested_attributes_for :submission_content, allow_destroy:true
4 5
 end

+ 1 - 1
app/views/missions/_step_submission.html.erb

@@ -20,7 +20,7 @@
20 20
 					
21 21
 					<%= f.fields_for :submission_contents, SubmissionContent.new, show_empty: true do |f| %>
22 22
 						<%= f.alert_message "Please fix the errors below." %>
23
-						<%= f.fields_for :submission_text, SubmissionText.new, show_empty: true do |f| %>
23
+						<%= f.fields_for :submission, SubmissionText.new, show_empty: true do |f| %>
24 24
 							<%= f.text_field :content %>
25 25
 						<% end %>
26 26
 					<% end %>