Module: Zable::ActiveRecord::ClassMethods

Defined in:
lib/zable/active_record.rb

Defined Under Namespace

Modules: Helpers

Constant Summary collapse

PAGE_DEFAULTS =
{ 'num' => 1, 'size' => 200 }

Instance Method Summary collapse

Instance Method Details

#populate(params = {}) ⇒ Object



26
27
28
29
30
# File 'lib/zable/active_record.rb', line 26

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

#scoped_for_paginate(params, scoped_object) ⇒ Object



20
21
22
23
24
# File 'lib/zable/active_record.rb', line 20

def scoped_for_paginate(params, scoped_object)
  page = (PAGE_DEFAULTS.merge(params[:page] || {})).stringify_keys
  scoped_object = scoped_object.paginate(:page => page['num'], :per_page => page['size']) if scoped_object.respond_to?(:paginate)
  scoped_object
end

#scoped_for_search(params, scoped_object) ⇒ Object



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

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



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

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