Class: CrudComponents::Fields::EnumField

Inherits:
Base
  • Object
show all
Defined in:
lib/crud_components/fields/enum_field.rb

Overview

enum: badge cell, select of enum keys, values validated against the enum definition — invalid ones leave the scope unchanged.

Constant Summary

Constants inherited from Base

Base::NON_EDITABLE_COLUMNS

Instance Attribute Summary

Attributes inherited from Base

#facets, #model, #name, #options

Instance Method Summary collapse

Methods inherited from Base

#apply_filter, #apply_filter_facet, #apply_sort, #column, #custom_header?, #declared_preloads, #eager_load, #editable?, #editable_permitted?, #filter_control, #filter_facet, #filterable?, #form_partial, #group_label, #group_model, #header, #header_actions, #human_name, #initialize, #nullable?, #permit_param, #permitted?, #picker_label, #range_filter?, #render_block, #renderer, #renderer_options, #sort_facet, #sortable?, #value

Constructor Details

This class inherits a constructor from CrudComponents::Fields::Base

Instance Method Details

#apply_derived_filter(scope, exact: nil) ⇒ Object



32
33
34
35
36
37
# File 'lib/crud_components/fields/enum_field.rb', line 32

def apply_derived_filter(scope, exact: nil, **)
  return scope.where(name => nil) if exact == CrudComponents::NULL_FILTER_VALUE && nullable?
  return scope unless exact && enum_keys.include?(exact)

  scope.where(name => exact)
end

#default_editable?Boolean

Returns:

  • (Boolean)


10
# File 'lib/crud_components/fields/enum_field.rb', line 10

def default_editable? = true

#default_rendererObject



6
# File 'lib/crud_components/fields/enum_field.rb', line 6

def default_renderer = :enum

#derived_filter_controlObject



9
# File 'lib/crud_components/fields/enum_field.rb', line 9

def derived_filter_control = :select

#derived_filterable?Boolean

Returns:

  • (Boolean)


7
# File 'lib/crud_components/fields/enum_field.rb', line 7

def derived_filterable? = true

#derived_sortable?Boolean

Returns:

  • (Boolean)


8
# File 'lib/crud_components/fields/enum_field.rb', line 8

def derived_sortable? = true

#enum_keysObject



17
18
19
# File 'lib/crud_components/fields/enum_field.rb', line 17

def enum_keys
  model.defined_enums[name.to_s].keys
end

#filter_choices(_query = nil) ⇒ Object



21
22
23
# File 'lib/crud_components/fields/enum_field.rb', line 21

def filter_choices(_query = nil)
  enum_keys.map { |key| [human_value(key), key] }
end

#filter_includes_null?Boolean

A nullable column offers a “not set” (IS NULL) choice in the filter.

Returns:

  • (Boolean)


30
# File 'lib/crud_components/fields/enum_field.rb', line 30

def filter_includes_null? = nullable?

#form_choicesObject



13
14
15
# File 'lib/crud_components/fields/enum_field.rb', line 13

def form_choices
  enum_keys.map { |key| [human_value(key), key] }
end

#form_controlObject



11
# File 'lib/crud_components/fields/enum_field.rb', line 11

def form_control = :enum

#human_value(key) ⇒ Object



25
26
27
# File 'lib/crud_components/fields/enum_field.rb', line 25

def human_value(key)
  model.human_attribute_name("#{name}.#{key}", default: key.to_s.humanize)
end