Sha256: 7162e177c0b3c5648be1992e7b4f0ef037f677e1cd3417f9f8d46a8647d300e7
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
class TreeFieldType < FieldType attr_accessor :values validates :values, presence: true, if: :validate_presence? validate :minimum, if: :validate_minimum? validate :maximum, if: :validate_maximum? def elasticsearch_mapping { name: mapping_field_name, type: :string, analyzer: :snowball } end def data @values end def data=(data_hash) values = data_hash['values'] if values.is_a?(Hash) @values = { values: values.keys } else @values = { values: [values] } end end def field_item_as_indexed_json_for_field_type(field_item, options = {}) json = {} json[mapping_field_name] = field_item.data['values'] json end private def mapping_field_name "#{field_name.parameterize(separator: '_')}_tree" end def minimum if !@values.nil? && @values[:values].length >= validations[:minimum] true else errors.add(:minimum, "You have selected too few values.") false end end def maximum unless @values.nil? if @values[:values].length <= validations[:maximum] true else errors.add(:maximum, "You have selected too many values.") false end end end def validate_presence? validations.key? :presence end def validate_minimum? validations.key? :minimum end def validate_maximum? validations.key? :maximum end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cortex-plugins-core-2.1.1 | app/models/tree_field_type.rb |
cortex-plugins-core-2.1.0 | app/models/tree_field_type.rb |