Sha256: 6bf14e2fa8ef36e9b75031a7c1618fff1858f81062d2f8dbf5c5f7f7a1d14b1e
Contents?: true
Size: 1.41 KB
Versions: 6
Compression:
Stored size: 1.41 KB
Contents
# -*- encoding : utf-8 -*- require 'search/conditions/abstract' module RademadeAdmin module Search module Conditions class RelatedList < Abstract attr_reader :item protected def initialize(item, params, data_items) @item = item super(params, data_items) end def where where_conditions = RademadeAdmin::Search::Part::Where.new(:and) where_conditions.add(:id, related_item_ids) @params.slice(*@data_items.origin_fields).each do |field, value| where_conditions.add(field, value) end where_conditions end def order order_conditions = super related_order_field = order_field order_conditions.unshift(related_order_field, @params[:direction]) unless related_order_field.nil? order_conditions end def page @params[:page] || 1 end def per_page @params[:paginate] || 20 end private def order_field if @params[:sort] @params[:sort] else @data_items.has_field?(:position) ? :position : nil end end def related_item_ids related_items = @item.send(params[:relation]) related_items.map do |related_item| related_item.id.to_s end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems