class Pickel::Search
Attributes
klass[R]
params[R]
relation[R]
s[R]
sorts[R]
Public Class Methods
new(relation, params = {})
click to toggle source
# File lib/pickel/search.rb, line 7 def initialize(relation, params = {}) @relation = relation @klass = relation.klass @params = params || {} @sorts = [] @sorts << @params.delete(:s) @sorts << @params.delete(:sorts) @sorts.compact! end
Public Instance Methods
html_id()
click to toggle source
# File lib/pickel/search.rb, line 34 def html_id "#{klass.to_s.underscore}_search" end
method_missing(method_id, *args)
click to toggle source
Calls superclass method
# File lib/pickel/search.rb, line 42 def method_missing(method_id, *args) method_name = method_id.to_s getter_name = method_name.delete_suffix('=') predicate = Predicate.find(getter_name) if predicate && method_name.end_with?('=') params[getter_name] = *args elsif predicate params[getter_name] else super end end
respond_to?(name, include_all = false)
click to toggle source
Calls superclass method
# File lib/pickel/search.rb, line 38 def respond_to?(name, include_all = false) super || params.key?(name) end
result()
click to toggle source
# File lib/pickel/search.rb, line 24 def result conditions = params.map { |k, v| Condition.for(klass, k).build(v) } if sorts.empty? conditions.inject(relation, :merge) else conditions.inject(relation, :merge).order(sorts) end end
sorts=(args)
click to toggle source
# File lib/pickel/search.rb, line 19 def sorts=(args) @sorts = args end
Also aliased as: s=