Module: CoreExtensions::HerWithQueryFilter

Defined in:
lib/vindi/core_extensions/her_with_query_filter.rb

Overview

WARNING: monkey patch (github.com/remi/her/blob/master/lib/her/model/relation.rb#L34)

The ‘where` clause must be adapted to vindi requirements: atendimento.vindi.com.br/hc/pt-br/articles/204163150

Instance Method Summary collapse

Instance Method Details

#where(params = {}) ⇒ Object

Add a query string parameter

Examples:

@users = User.where(contains: { name: 'Gandalf' })
# Fetched via GET "/users?query=name:Gandalf"
@users = User.active.where(gt: { created_at: Time.zone.yesterday })
# Fetched via GET "/users?query=status=active created_at>2021-01-01"


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/vindi/core_extensions/her_with_query_filter.rb', line 18

def where(params = {})
  return self if params.blank? && !@_fetch.nil?

  clone.tap do |r|
    r.params = r.params.merge(params)

    # Default params, as order and page number, will always be used.
    default_params = extract_default_params r.params

    # Query filters is joined into a single param called :query.
    query = [r.params.delete(:query), params_to_query(r.params)].compact.join " "

    r.params = { query: query }.merge(default_params)

    r.clear_fetch_cache!
  end
end