Module: SearchObject::Base::ClassMethods

Defined in:
lib/search_object/base.rb

Instance Method Summary collapse

Instance Method Details

#option(name, default = nil, &block) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/search_object/base.rb', line 54

def option(name, default = nil, &block)
  name = name.to_s

  @defaults[name] = default unless default.nil?
  @actions[name]  = block || ->(scope, value) { scope.where name => value unless value.blank? }

  define_method(name) { @search.param name }
end

#scope(&block) ⇒ Object



50
51
52
# File 'lib/search_object/base.rb', line 50

def scope(&block)
  @scope = block
end

#search(args) ⇒ Object



43
44
45
46
47
48
# File 'lib/search_object/base.rb', line 43

def search(args)
  scope  = (@scope && @scope.call) || args.shift
  params = @defaults.merge(Helper.select_keys Helper.stringify_keys(args.shift || {}), @actions.keys)

  Search.new scope, params, @actions
end