Module: Avo::Concerns::HasFieldDiscovery
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/avo/concerns/has_field_discovery.rb
Overview
This concern facilitates field discovery for models in Avo, mapping database columns and associations to Avo fields. It supports:
- Automatic detection of fields based on column names, types, and associations.
- Customization via `only`, `except`, and global configuration overrides.
- Handling of special associations like rich text, attachments, and tags.
Constant Summary collapse
- COLUMN_NAMES_TO_IGNORE =
%i[ encrypted_password reset_password_token reset_password_sent_at remember_created_at password_digest ].freeze
Instance Method Summary collapse
-
#discover_associations(only: nil, except: nil, **field_options) ⇒ Object
Discovers and configures associations as fields.
-
#discover_columns(only: nil, except: nil, **field_options) ⇒ Object
Discovers and configures database columns as fields.
-
#model_db_columns ⇒ Object
Returns database columns for the model, excluding ignored columns.
Instance Method Details
#discover_associations(only: nil, except: nil, **field_options) ⇒ Object
Discovers and configures associations as fields
53 54 55 56 57 58 59 |
# File 'lib/avo/concerns/has_field_discovery.rb', line 53 def discover_associations(only: nil, except: nil, **) (only, except, ) return unless safe_model_class.respond_to?(:reflections) discover_basic_associations end |
#discover_columns(only: nil, except: nil, **field_options) ⇒ Object
Discovers and configures database columns as fields
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/avo/concerns/has_field_discovery.rb', line 40 def discover_columns(only: nil, except: nil, **) (only, except, ) return unless safe_model_class.respond_to?(:columns_hash) discoverable_columns.each do |column_name, column| process_column(column_name, column) end discover_rich_texts end |
#model_db_columns ⇒ Object
Returns database columns for the model, excluding ignored columns
35 36 37 |
# File 'lib/avo/concerns/has_field_discovery.rb', line 35 def model_db_columns @model_db_columns ||= safe_model_class.columns_hash.symbolize_keys.except(*COLUMN_NAMES_TO_IGNORE) end |