Sha256: 346d4db66a7309c7213aed0c3ed99ac401eab95112b60f9aef6b1f004aa90e32

Contents?: true

Size: 991 Bytes

Versions: 43

Compression:

Stored size: 991 Bytes

Contents

module Releaf
  class DefaultSearchableFields
    attr_accessor :klass

    def initialize(klass)
      self.klass = klass
    end

    def find
      search_columns = possible_field_names & string_columns
      search_columns << { translations: searchable_translated_string_columns } if has_searchable_translated_string_columns?
      search_columns
    end

    def string_columns
      klass.columns.select { |column| column.type == :string }.map(&:name)
    end

    def searchable_translated_string_columns
      @searchable_translated_string_columns ||= self.class.new(klass::Translation).find
    end

    def has_searchable_translated_string_columns?
      return false unless klass.translates?
      searchable_translated_string_columns.present?
    end

    def possible_field_names
      %w[
        email
        first_name
        forename
        last_name
        login
        middle_name
        name
        surname
        title
        username
      ]
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
releaf-core-3.1.0 app/lib/releaf/default_searchable_fields.rb
releaf-core-3.0.3 app/lib/releaf/default_searchable_fields.rb
releaf-core-3.0.2 app/lib/releaf/default_searchable_fields.rb
releaf-core-3.0.1 app/lib/releaf/default_searchable_fields.rb
releaf-core-3.0.0 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.2.1 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.2.0 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.1.2 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.1.1 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.1.0 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.0.1 app/lib/releaf/default_searchable_fields.rb
releaf-core-2.0.0 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.22 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.21 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.20 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.19 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.18 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.17 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.16 app/lib/releaf/default_searchable_fields.rb
releaf-core-1.1.15 app/lib/releaf/default_searchable_fields.rb