Module: Motor::BuildSchema::FindSearchableColumns

Defined in:
lib/motor/build_schema/find_searchable_columns.rb

Constant Summary collapse

SELECT_COLUMNS_AMOUNT =
2
COLUMN_TYPES =
BuildSchema::SEARCHABLE_COLUMN_TYPES

Class Method Summary collapse

Class Method Details

.call(model) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/motor/build_schema/find_searchable_columns.rb', line 11

def call(model)
  columns = find_searchable_columns(model)

  selected_columns =
    columns.grep(BuildSchema::FindDisplayColumn::DISPLAY_NAME_REGEXP).presence

  selected_columns ||= columns.first(SELECT_COLUMNS_AMOUNT)

  ([model.primary_key] + selected_columns).compact.sort
end

.find_searchable_columns(model) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/motor/build_schema/find_searchable_columns.rb', line 22

def find_searchable_columns(model)
  model.columns.map do |column|
    next unless column.type.in?(COLUMN_TYPES)
    next if column.respond_to?(:array?) && column.array?
    next if model.validators_on(column.name).any?(ActiveModel::Validations::InclusionValidator)

    column.name
  end.compact
end