module Discerner::Methods::Models::ParameterCategory

Public Class Methods

included(base) click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 5
def self.included(base)
  base.send :include, SoftDelete

  # Associations
  base.send :belongs_to,  :dictionary, inverse_of: :parameter_categories
  base.send :has_many,    :parameters, inverse_of: :parameter_category,  dependent: :destroy

  # Validations
  base.send :validates, :name, presence: true, uniqueness: { scope: :dictionary_id, message: "for parameter category has already been taken"}
  base.send :validates, :dictionary, presence: { message: "for parameter category can't be blank" }

  # Scopes
  base.send(:scope, :searchable, -> {base.includes(:parameters).where('discerner_parameters.search_model IS NOT NULL AND discerner_parameters.search_method IS NOT NULL AND discerner_parameters.deleted_at IS NULL AND discerner_parameters.hidden_in_search = ?', false).references(:discerner_parameters)})
  base.send(:scope, :exportable, -> {base.includes(:parameters).where('discerner_parameters.export_model IS NOT NULL AND discerner_parameters.export_method IS NOT NULL AND discerner_parameters.deleted_at IS NULL AND discerner_parameters.hidden_in_export = ?', false).references(:discerner_parameters)})
  base.send(:scope, :ordered_by_name, -> {base.order('discerner_parameter_categories.name ASC')})

  # Hooks
  base.send :after_commit, :cascade_delete_parameters, on: :update, if: Proc.new { |record| record.previous_changes.include?('deleted_at') }
end
new(*args) click to toggle source

Instance Methods

Calls superclass method
# File lib/discerner/methods/models/parameter_category.rb, line 26
def initialize(*args)
  super(*args)
end

Public Instance Methods

css_class_name() click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 42
def css_class_name
  "parameter_category_#{parameterized_name}"
end
exportable_parameters() click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 38
def exportable_parameters
  parameters.exportable
end
parameterized_name() click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 30
def parameterized_name
  name.parameterize.underscore
end
searchable_parameters() click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 34
def searchable_parameters
  parameters.searchable
end

Private Instance Methods

cascade_delete_parameters() click to toggle source
# File lib/discerner/methods/models/parameter_category.rb, line 47
def cascade_delete_parameters
  return unless deleted?
  parameters.each do |p|
    p.deleted_at = Time.now
    p.save
  end
end