aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/compliance_control_block.rb
blob: a73784be622a73e0741caf09da99663ca3021a23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class ComplianceControlBlock < ActiveRecord::Base
  include StifTransportModeEnumerations
  include StifTransportSubmodeEnumerations

  belongs_to :compliance_control_set
  has_many :compliance_controls, dependent: :destroy

  store_accessor :condition_attributes,
    :transport_mode,
    :transport_submode

  validates :transport_mode, presence: true
  validates :compliance_control_set, presence: true

  validate def unique_transport_mode_submode_combination
    same_cc_block = ComplianceControlBlock.where("compliance_control_set_id = ? AND condition_attributes->'transport_mode' = ? AND condition_attributes->'transport_submode' = ?", self.compliance_control_set_id, self.transport_mode, self.transport_submode)
    return true if same_cc_block.empty?
    errors.add(:duplicate, I18n.t('activerecord.errors.models.compliance_control_block.attributes.condition_attributes.duplicate'))
  end

  def name
    ApplicationController.helpers.transport_mode_text(self)
  end

end