diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/compliance_controls_controller.rb | 6 | ||||
| -rw-r--r-- | app/helpers/compliance_control_sets_helper.rb | 5 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 11 |
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 |
