Module: Discerner::Methods::Models::Parameter

Included in:
Parameter
Defined in:
lib/discerner/methods/models/parameter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/discerner/methods/models/parameter.rb', line 5

def self.included(base)
  base.send :include, SoftDelete

  # Associations
  base.send :belongs_to,  :parameter_category,          inverse_of: :parameters
  base.send :belongs_to,  :parameter_type,              inverse_of: :parameters
  base.send :has_many,    :parameter_values,            inverse_of: :parameter, dependent: :destroy
  base.send :has_many,    :search_parameters,           inverse_of: :parameter, dependent: :destroy
  base.send :has_many,    :export_parameters,           inverse_of: :parameter, dependent: :destroy
  base.send :has_many,    :parameter_value_categories,  inverse_of: :parameter, dependent: :destroy

  #Validations
  base.send :validates, :name, :unique_identifier, :parameter_category, presence: { message: "for parameter can't be blank" }
  base.send :validate,  :validate_unique_identifier
  base.send :validate,  :validate_search_attributes
  base.send :validate,  :validate_export_attributes

  # Scopes
  base.send(:scope, :searchable, -> {base.not_deleted.where('search_model is not null and search_method is not null and hidden_in_search = ?', false)})
  base.send(:scope, :exportable, -> {base.not_deleted.where('export_model is not null and export_method is not null and hidden_in_export = ?', false)})

  # Hooks
  base.send :after_commit, :cascade_delete_parameter_values, on: :update, if: Proc.new { |record| record.previous_changes.include?('deleted_at') }
end

Instance Method Details

#css_class_nameObject



43
44
45
46
47
# File 'lib/discerner/methods/models/parameter.rb', line 43

def css_class_name
  css_class_array = [parameter_type.name, parameter_category.css_class_name, parameter_category.dictionary.css_class_name]
  css_class_array << 'exclusive' if exclusive
  css_class_array.join(' ')
end

#display_nameObject



39
40
41
# File 'lib/discerner/methods/models/parameter.rb', line 39

def display_name
  "#{parameter_category.name} - #{name}"
end

#initialize(*args) ⇒ Object

Instance Methods



31
32
33
# File 'lib/discerner/methods/models/parameter.rb', line 31

def initialize(*args)
  super(*args)
end

#used_in_search?Boolean



35
36
37
# File 'lib/discerner/methods/models/parameter.rb', line 35

def used_in_search?
  search_parameters.any? || export_parameters.any?
end