aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/compliance_controls_controller.rb6
-rw-r--r--app/helpers/compliance_control_sets_helper.rb5
-rw-r--r--app/models/compliance_control.rb11
3 files changed, 13 insertions, 9 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index a20602c63..ac6c54a3c 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -5,11 +5,7 @@ class ComplianceControlsController < ChouetteController
actions :all, :except => [:index]
def select_type
- @sti_subclasses = Hash.new
-
- ComplianceControl.subclass_patterns.each do |key, value|
- @sti_subclasses[key] = ComplianceControl.subclasses.select {|klass| klass.object_type == value}
- end
+ @sti_subclasses ||= ComplianceControl.subclasses_to_hash
end
def show
diff --git a/app/helpers/compliance_control_sets_helper.rb b/app/helpers/compliance_control_sets_helper.rb
index 7adb46971..a62b27858 100644
--- a/app/helpers/compliance_control_sets_helper.rb
+++ b/app/helpers/compliance_control_sets_helper.rb
@@ -84,10 +84,7 @@ module ComplianceControlSetsHelper
),
TableBuilderHelper::Column.new(
key: :subclass,
- attribute: Proc.new do |compliance_control|
- key = ComplianceControl.subclass_patterns.key(compliance_control.object.class.object_type)
- I18n.t("compliance_controls.filters.subclasses.#{key}")
- end
+ attribute: Proc.new { |compliance_control| compliance_control.object.class.translated_subclass }
),
TableBuilderHelper::Column.new(
key: :name,
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 59c359bd5..4a2a6e91c 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -20,6 +20,17 @@ class ComplianceControl < ApplicationModel
}
end
+ def subclasses_to_hash
+ ComplianceControl.subclasses.inject(Hash.new{ |h, k| h[k] = [] } ) do |h, klass|
+ h[ComplianceControl.subclass_patterns.key(klass.object_type)] << klass
+ h
+ end
+ end
+
+ def translated_subclass
+ I18n.t("compliance_controls.filters.subclasses.#{subclass_patterns.key(self.object_type)}")
+ end
+
def object_type
self.default_code.match(/^\d+-(?'object_type'\w+)-\d+$/)[:object_type]
end