aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/compliance_controls_controller.rb2
-rw-r--r--app/models/compliance_control.rb6
-rw-r--r--app/models/compliance_control_block.rb7
-rw-r--r--app/views/compliance_controls/_form.html.slim3
-rw-r--r--db/migrate/20170922121609_add_compliance_control_id_to_compliance_control_blocks.rb5
-rw-r--r--db/schema.rb3
6 files changed, 23 insertions, 3 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index c5c76fd58..bfa7cbefa 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -18,6 +18,6 @@ class ComplianceControlsController < BreadcrumbController
private
def compliance_control_params
- params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type)
+ params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name])
end
end
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 7a09a176c..73b6be8e5 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -1,8 +1,10 @@
class ComplianceControl < ActiveRecord::Base
+ extend Enumerize
belongs_to :compliance_control_set
- belongs_to :compliance_control_block
- extend Enumerize
+ has_one :compliance_control_block, dependent: :destroy
+ accepts_nested_attributes_for :compliance_control_block
+
enumerize :criticity, in: %i(info warning error), scope: true, default: :info
validates :criticity, presence: true
diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb
index cf5a9d72b..7fda998eb 100644
--- a/app/models/compliance_control_block.rb
+++ b/app/models/compliance_control_block.rb
@@ -1,3 +1,10 @@
class ComplianceControlBlock < ActiveRecord::Base
belongs_to :compliance_control_set
+ belongs_to :compliance_control
+
+ before_save :set_compliance_control_set
+
+ def set_compliance_control_set
+ self.compliance_control_set = self.compliance_control.compliance_control_set
+ end
end
diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim
index b4298c5fd..cc0310620 100644
--- a/app/views/compliance_controls/_form.html.slim
+++ b/app/views/compliance_controls/_form.html.slim
@@ -7,6 +7,9 @@
= f.input :criticity
= f.input :comment
+ = f.fields_for :compliance_control_block, ComplianceControlBlock.new do |c|
+ = c.input :name
+ end
.separator
= f.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'compliance_control_form'
diff --git a/db/migrate/20170922121609_add_compliance_control_id_to_compliance_control_blocks.rb b/db/migrate/20170922121609_add_compliance_control_id_to_compliance_control_blocks.rb
new file mode 100644
index 000000000..18a6b12cf
--- /dev/null
+++ b/db/migrate/20170922121609_add_compliance_control_id_to_compliance_control_blocks.rb
@@ -0,0 +1,5 @@
+class AddComplianceControlIdToComplianceControlBlocks < ActiveRecord::Migration
+ def change
+ add_reference :compliance_control_blocks, :compliance_control, index: true, foreign_key: true
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c95280051..45bc74d07 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -217,8 +217,10 @@ ActiveRecord::Schema.define(version: 20170925154017) do
t.integer "compliance_control_set_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.integer "compliance_control_id"
end
+ add_index "compliance_control_blocks", ["compliance_control_id"], name: "index_compliance_control_blocks_on_compliance_control_id", using: :btree
add_index "compliance_control_blocks", ["compliance_control_set_id"], name: "index_compliance_control_blocks_on_compliance_control_set_id", using: :btree
create_table "compliance_control_sets", id: :bigserial, force: :cascade do |t|
@@ -987,6 +989,7 @@ ActiveRecord::Schema.define(version: 20170925154017) do
add_foreign_key "compliance_checks", "compliance_check_blocks"
add_foreign_key "compliance_checks", "compliance_check_sets"
add_foreign_key "compliance_control_blocks", "compliance_control_sets"
+ add_foreign_key "compliance_control_blocks", "compliance_controls"
add_foreign_key "compliance_control_sets", "organisations"
add_foreign_key "compliance_controls", "compliance_control_blocks"
add_foreign_key "compliance_controls", "compliance_control_sets"