class Advanced::Search
Public Class Methods
define_search(name, requirements = [], permits = [], &block)
click to toggle source
# File lib/advanced/search.rb, line 30 def define_search(name, requirements = [], permits = [], &block) definition.add(requirements) definition.add(permits) define_method "search_#{name}" do |**opts| if requirements.all? { |k| opts[k] } instance_exec( *opts.values_at(*requirements), *opts.values_at(*permits), &block ) end end end
definition()
click to toggle source
# File lib/advanced/search.rb, line 12 def definition @definition ||= Definition.new end
parameter_names()
click to toggle source
# File lib/advanced/search.rb, line 16 def parameter_names definition.parameter_names_for(self) end
scope(name = :search)
click to toggle source
# File lib/advanced/search.rb, line 26 def scope(name = :search) Builders::Scope.new(self, name) end
use(other)
click to toggle source
# File lib/advanced/search.rb, line 20 def use(other) define_method "search_#{other.name}" do |**opts| other.call(scope, **opts) end end
Public Instance Methods
call(params = {})
click to toggle source
Calls superclass method
# File lib/advanced/search.rb, line 48 def call(params = {}) super(params.to_h) end