Sha256: 6964603543dee9313db8602510e55d5a7d4c74ccd025d7a3cb77371b272c2a50
Contents?: true
Size: 874 Bytes
Versions: 10
Compression:
Stored size: 874 Bytes
Contents
require "active_support/core_ext/module/delegation" require "active_support/core_ext/object/blank" module Administrate class Search def initialize(resolver, term) @resolver = resolver @term = term end def run if @term.blank? resource_class.all else resource_class.where(query, *search_terms) end end private delegate :resource_class, to: :resolver def query search_attributes.map { |attr| "lower(#{attr}) LIKE ?" }.join(" OR ") end def search_terms ["%#{term.downcase}%"] * search_attributes.count end def search_attributes attribute_types.keys.select do |attribute| attribute_types[attribute].searchable? end end def attribute_types resolver.dashboard_class::ATTRIBUTE_TYPES end attr_reader :resolver, :term end end
Version data entries
10 entries across 10 versions & 1 rubygems