Sha256: c9a82ee67b373e130b73cdaf2c5271c12280645b8765a5163b7265a8ab7c31ad
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
# frozen_string_literal: true module Katalyst module Tables module Collection module Type class Enum < Value include Helpers::Multiple def initialize(multiple: true, **) super end def type :enum end def suggestions(scope, attribute) _, model, column = model_and_column_for(scope, attribute) raise ArgumentError, "Unknown enum #{column} for #{model}" unless model.defined_enums.has_key?(column) values = model.defined_enums[column].keys if attribute.value_before_type_cast.present? values = values.select { |key| key.include?(attribute.value_before_type_cast) } end values.map { |value| constant_suggestion(attribute:, model:, column:, value:) } end private def cast_value(value) value.to_s end def describe_key(model, attribute, key) label = model.human_attribute_name(attribute.name).downcase value = model.human_attribute_name("#{attribute.name}.#{key}").downcase description = "#{model.model_name.human} #{label} is #{value}" description += " (default)" if default?(attribute, key) description end def default?(attribute, value) if multiple? attribute.original_value&.intersection(cast(value))&.any? else attribute.default_value.eql?(cast(value)) end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
katalyst-tables-3.5.0 | lib/katalyst/tables/collection/type/enum.rb |