Sha256: 9d5458f278133173fe5f958e0c1172ca54e01fb4cd519a244ff82c433da5509a

Contents?: true

Size: 1.43 KB

Versions: 16

Compression:

Stored size: 1.43 KB

Contents

module Discerner
  module Methods
    module Models
      module Operator
        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

        # Instance Methods
        def initialize(*args)
          super(*args)
        end

        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
          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
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
discerner-2.0.16 lib/discerner/methods/models/operator.rb
discerner-2.0.15 lib/discerner/methods/models/operator.rb
discerner-2.0.14 lib/discerner/methods/models/operator.rb
discerner-2.0.13 lib/discerner/methods/models/operator.rb
discerner-2.0.12 lib/discerner/methods/models/operator.rb
discerner-2.0.11 lib/discerner/methods/models/operator.rb
discerner-2.0.10 lib/discerner/methods/models/operator.rb
discerner-2.0.9 lib/discerner/methods/models/operator.rb
discerner-2.0.8 lib/discerner/methods/models/operator.rb
discerner-2.0.7 lib/discerner/methods/models/operator.rb
discerner-2.0.6 lib/discerner/methods/models/operator.rb
discerner-2.0.5 lib/discerner/methods/models/operator.rb
discerner-2.0.4 lib/discerner/methods/models/operator.rb
discerner-2.0.3 lib/discerner/methods/models/operator.rb
discerner-2.0.2 lib/discerner/methods/models/operator.rb
discerner-2.0.1 lib/discerner/methods/models/operator.rb