Module: Zable::ActiveRecord::ClassMethods

Defined in:
lib/zable/active_record.rb

Defined Under Namespace

Modules: Helpers

Instance Method Summary collapse

Instance Method Details

#populate(params = {}, options = {}) ⇒ Object



33
34
35
36
37
# File 'lib/zable/active_record.rb', line 33

def populate(params={}, options = {})
  obj = scoped_for_sort(params, self)
  obj = scoped_for_search(params, obj)
  scoped_for_paginate(params, obj, options)
end

#scoped_for_paginate(params, scoped_object, options) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/zable/active_record.rb', line 19

def scoped_for_paginate(params, scoped_object, options)
  page_params = (params[:page] || {}).stringify_keys
  if scoped_object.respond_to?(:paginate)
    paginate_opts = {}
    paginate_opts[:page] = page_params['num'] || 1
    # params take preference over option, so that we may change page size on the frontend
    page_size = page_params['size'] || options[:per_page]
    page_size = 99999999 if page_size == 'all'
    paginate_opts[:per_page] = page_size if page_size.present?
    scoped_object = scoped_object.paginate(paginate_opts)
  end
  scoped_object
end

#scoped_for_search(params, scoped_object) ⇒ Object



13
14
15
16
17
# File 'lib/zable/active_record.rb', line 13

def scoped_for_search(params, scoped_object)
  hash = (params[:search] || {}).stringify_keys
  scoped_object = scoped_object.for_search_params(hash) unless hash.empty?
  scoped_object
end

#scoped_for_sort(params, scoped_object) ⇒ Object



7
8
9
10
11
# File 'lib/zable/active_record.rb', line 7

def scoped_for_sort(params, scoped_object)
  hash = (params[:sort] || {}).stringify_keys
  scoped_object = scoped_object.for_sort_params(hash) unless hash.empty?
  scoped_object
end