module Discerner::Methods::Models::Operator

Public Class Methods

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

  # Associations
  base.send :has_many,                :search_parameter_values, inverse_of: :operator
  base.send :has_many,                :search_combinations,     inverse_of: :operator
  base.send :has_and_belongs_to_many, :parameter_types, join_table: :discerner_operators_parameter_types

  # Validations
  base.send :validates, :symbol, presence: true, uniqueness: {message: "for operator has already been taken"}
  base.send :validates, :operator_type, presence: true
  base.send :validate,  :type_supported?
end
new(*args) click to toggle source

Instance Methods

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

Public Instance Methods

css_class_name() click to toggle source
# File lib/discerner/methods/models/operator.rb, line 24
def css_class_name
  css_class = parameter_types.map{ |t| t.name }
  css_class << operator_type unless operator_type.blank?
  css_class.join(' ')
end

Private Instance Methods

type_supported?() click to toggle source
# File lib/discerner/methods/models/operator.rb, line 31
def type_supported?
  return if self.operator_type.blank?
  supported_types = ['comparison', 'text_comparison', 'range', 'list', 'presence']
  errors.add(:base,"Operator type '#{self.operator_type}' is not supported, please use one of the following types: #{supported_types.join(', ')}") unless supported_types.include?(self.operator_type)
end