4 class FilterList < Base
17 w += ' and ' unless w.blank?
18 [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id]
22 return @includes if @includes
23 w = @owner_model ? {@owner_model.item_name => {}} : {}
24 w.merge({@from => {} })
28 @model.where(self.where(filter_item)).includes(self.includes).order(self.order).offset(@offset).limit(@page_size)
31 def paginate filter_item
32 Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.includes).count, nil)).page(@offset).per(@page_size)
35 def self._add_action item_name, action_name, list_name, list_conf
37 model = item_name.classify.constantize
38 controller_name = model.plural + 'Controller'
39 controller = controller_name.constantize
40 list_list_conf = Pettanr::Application::manifest.list(item_name).lists[list_name] || {}
41 from = list_list_conf['from']
42 filter_model = from.classify.constantize
43 filter_key = list_list_conf['filter_key']
44 return if controller.method_defined?(action_name)
45 controller.define_method(action_name) do
46 filter_list filter_model, params