Class: CrudComponents::Fields::EnumField
- Inherits:
-
Base
- Object
- Base
- CrudComponents::Fields::EnumField
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
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
10
|
# File 'lib/crud_components/fields/enum_field.rb', line 10
def default_editable? = true
|
#default_renderer ⇒ Object
6
|
# File 'lib/crud_components/fields/enum_field.rb', line 6
def default_renderer = :enum
|
#derived_filter_control ⇒ Object
9
|
# File 'lib/crud_components/fields/enum_field.rb', line 9
def derived_filter_control = :select
|
#derived_filterable? ⇒ Boolean
7
|
# File 'lib/crud_components/fields/enum_field.rb', line 7
def derived_filterable? = true
|
#derived_sortable? ⇒ Boolean
8
|
# File 'lib/crud_components/fields/enum_field.rb', line 8
def derived_sortable? = true
|
#enum_keys ⇒ Object
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.
30
|
# File 'lib/crud_components/fields/enum_field.rb', line 30
def filter_includes_null? = nullable?
|
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
|
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
|