class SearchObject::Search
:api: private
Attributes
params[R]
Public Class Methods
new(scope:, options: nil, defaults: nil, params: nil)
click to toggle source
# File lib/search_object/search.rb, line 8 def initialize(scope:, options: nil, defaults: nil, params: nil) @scope = scope @options = options || {} @defaults = defaults || {} self.params = params end
Public Instance Methods
count(context)
click to toggle source
# File lib/search_object/search.rb, line 31 def count(context) query(context).count end
param(name)
click to toggle source
# File lib/search_object/search.rb, line 20 def param(name) @params[name.to_s] end
params=(params)
click to toggle source
# File lib/search_object/search.rb, line 16 def params=(params) @params = @defaults.merge(Helper.slice_keys(Helper.stringify_keys(params || {}), @options.keys)) end
query(context)
click to toggle source
# File lib/search_object/search.rb, line 24 def query(context) @params.inject(@scope) do |scope, (name, value)| new_scope = context.instance_exec scope, value, &@options[name] new_scope || scope end end