aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/compliance_control.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/compliance_control.rb')
-rw-r--r--app/models/compliance_control.rb34
1 files changed, 32 insertions, 2 deletions
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 12ff4737a..c5389e832 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -1,12 +1,42 @@
class ComplianceControl < ActiveRecord::Base
+ extend Enumerize
belongs_to :compliance_control_set
- belongs_to :compliance_control_block
+ has_one :compliance_control_block, dependent: :destroy
+ accepts_nested_attributes_for :compliance_control_block
+
+ @@default_criticity = :warning
+ @@default_code = ""
- extend Enumerize
enumerize :criticity, in: %i(info warning error), scope: true, default: :info
validates :criticity, presence: true
validates :name, presence: true
validates :code, presence: true
+ validates :origin_code, presence: true
validates :compliance_control_set, presence: true
+
+ def self.policy_class
+ ComplianceControlPolicy
+ end
+
+ def self.inherited(child)
+ child.instance_eval do
+ def model_name
+ ComplianceControl.model_name
+ end
+ end
+ super
+ end
+
+ before_validation(on: :create) do
+ self.name ||= self.class.name
+ self.code ||= @@default_code
+ self.origin_code ||= @@default_code
+ self.criticity ||= @@default_criticity
+ end
+
end
+
+# Ensure STI subclasses are loaded
+# http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#autoloading-and-sti
+require_dependency 'generic_attribute_control/min_max'