Sha256: b032d46de6fa5343b5cbb3742a72256e70a2a79c1b6dc416318761c16eb0e7b3
Contents?: true
Size: 789 Bytes
Versions: 2
Compression:
Stored size: 789 Bytes
Contents
require 'simple_searchable/version' module SimpleSearchable module SearchableBy def searchable_by(*method_names) self.singleton_class.send(:define_method, :search) do |opts| return all if opts.nil? filter_all(method_names, opts) end self.send(:extend, FilterMethods) end module FilterMethods def filter(name, arg) arg.present? ? send(name, arg) : all end def filter_all(names, opts) result = self.all names.each do |n| unless opts[n].blank? opts[n].reject!(&:blank?) if opts[n].is_a?(Array) result = result.filter(n, opts[n]) end end result end end end end ActiveRecord::Base.send(:extend, SimpleSearchable::SearchableBy)
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
simple_searchable-1.0.0 | lib/simple_searchable.rb |
simple_searchable-0.1.0 | lib/simple_searchable.rb |