module Zendesk2::Searchable

Defines {#search} on relevant collections

Public Class Methods

included(klass) click to toggle source
# File lib/zendesk2/searchable.rb, line 4
def self.included(klass)
  klass.send(:extend, Zendesk2::Searchable::Attributes)
  # @note signal to underlying collection that a search request
  #       must be use when requesting associated pages
  klass.send(:attribute, :filtered, type: :boolean)
end

Public Instance Methods

Private Instance Methods

search_by_hash(terms) click to toggle source
# File lib/zendesk2/searchable.rb, line 37
def search_by_hash(terms)
  terms['type'] = self.class.search_type if self.class.search_type
  terms.merge(self.class.scopes.inject({}) do |r, k|
    val = public_send(k)
    val.nil? ? r : r.merge(k.to_s => val)
  end,).map { |k, v| "#{k}:#{v}" }.join(' ',)
end
search_by_string(terms) click to toggle source
# File lib/zendesk2/searchable.rb, line 45
def search_by_string(terms)
  additional_terms = []
  additional_terms = ["type:#{self.class.search_type}"] if self.class.search_type
  additional_terms += self.class.scopes.inject([]) do |r, k|
    val = public_send(k)
    val.nil? ? r : ["#{k}:#{val}"]
  end

  additional_terms.inject(terms.to_s) do |qualified_search, qualification|
    if !qualified_search.include?(qualification)
      "#{qualified_search} #{qualification}"
    else
      qualified_search
    end
  end
end