aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/compliance_check_block.rb2
-rw-r--r--app/models/compliance_check_set.rb3
-rw-r--r--app/models/compliance_control.rb11
3 files changed, 16 insertions, 0 deletions
diff --git a/app/models/compliance_check_block.rb b/app/models/compliance_check_block.rb
index 035c03ed9..ee60a8bb1 100644
--- a/app/models/compliance_check_block.rb
+++ b/app/models/compliance_check_block.rb
@@ -1,3 +1,5 @@
class ComplianceCheckBlock < ActiveRecord::Base
belongs_to :compliance_check_set
+
+ has_many :compliance_checks
end
diff --git a/app/models/compliance_check_set.rb b/app/models/compliance_check_set.rb
index e4146e0e2..536afc705 100644
--- a/app/models/compliance_check_set.rb
+++ b/app/models/compliance_check_set.rb
@@ -6,6 +6,9 @@ class ComplianceCheckSet < ActiveRecord::Base
belongs_to :workbench
belongs_to :parent, polymorphic: true
+ has_many :compliance_check_blocks
+ has_many :compliance_checks
+
has_many :compliance_check_resources
has_many :compliance_check_messages
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 33a075e40..363ef5d61 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -12,6 +12,17 @@ class ComplianceControl < ActiveRecord::Base
validates :origin_code, presence: true
validates :compliance_control_set, presence: true
+ validate def coherent_control_set
+ return true if compliance_control_block_id.nil?
+ ids = [compliance_control_block.compliance_control_set_id, compliance_control_set_id]
+ return true if ids.first == ids.last
+ names = ids.map{|id| ComplianceControlSet.find(id).name}
+ errors.add(:coherent_control_set,
+ I18n.t('compliance_controls.errors.incoherent_control_sets',
+ indirect_set_name: names.first,
+ direct_set_name: names.last))
+ end
+
class << self
def default_criticity; :warning end
def default_code; "" end