Sha256: 2cc5ab267e9990365cbdea2349f82efea59c9150b0e3f551d834f5bc142cd4a5
Contents?: true
Size: 1.43 KB
Versions: 6
Compression:
Stored size: 1.43 KB
Contents
module Searchlogic module Search # = Searchlogic Searching # # Implements searching functionality for searchlogic. Searchlogic::Search::Base and Searchlogic::Conditions::Base can both search and include # this module. module Searching # Use these methods just like you would in ActiveRecord SEARCH_METHODS = [:all, :find, :first] CALCULATION_METHODS = [:average, :calculate, :count, :maximum, :minimum, :sum] (SEARCH_METHODS + CALCULATION_METHODS).each do |method| class_eval <<-"end_eval", __FILE__, __LINE__ def #{method}(*args) find_options = {} options = args.extract_options! # can't pass options, your options are in the search klass.send(:with_scope, :find => acting_as_filter? ? {} : scope) do options = sanitize(#{SEARCH_METHODS.include?(method)}) if #{CALCULATION_METHODS.include?(method)} options[:distinct] = true if #{method == :count} && !joins.blank? && Config.search.remove_duplicates? args[0] = klass.primary_key if [nil, :all].include?(args[0]) end args << options results = klass.#{method}(*args) results.uniq! if #{SEARCH_METHODS.include?(method)} && results.is_a?(Array) && !joins.blank? && Config.search.remove_duplicates? results end end end_eval end end end end
Version data entries
6 entries across 6 versions & 1 rubygems