Sha256: 54dd66bdd58ad0d5408505c747f04ef99dcf948dee55fcc6c41387f767e4daa1
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 KB
Contents
# -*- encoding : utf-8 -*- module AbAdmin module Concerns module AdminAddition extend ActiveSupport::Concern included do scope(:admin, scoped) unless respond_to?(:admin) scope(:base, scoped) unless respond_to?(:base) scope :ids, lambda { |ids| where("#{quoted_table_name}.id IN (?)", AbAdmin.val_to_array(ids).push(0)) } class_attribute :batch_actions, :instance_writer => false self.batch_actions = [:destroy] end def next_prev_by_url(scope, url, prev=false) predicates = {'>' => '<', '<' => '>', 'desc' => 'asc', 'asc' => 'desc'} query = Rack::Utils.parse_nested_query(URI.parse(url).query).symbolize_keys query[:q] ||= {} order_str = query[:q]['s'] || 'id desc' order_col, order_mode = order_str.split quoted_order_col = self.class.quote_column(order_col) if prev query[:q]['s'] = ["#{order_col} #{predicates[order_mode]}", 'id desc'] predicate = order_mode == 'desc' ? '>' : '<' id_predicate = '<' else query[:q]['s'] = ["#{order_col} #{order_mode}", 'id'] predicate = order_mode == 'desc' ? '<' : '>' id_predicate = '>' end sql = "(#{quoted_order_col} #{predicate} :val OR (#{quoted_order_col} = :val AND #{self.class.quote_column('id')} #{id_predicate} #{self.id}))" scope.where(sql, :val => self.send(order_col)).ransack(query[:q]).result(:distinct => true).first end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ab_admin-0.2.1 | lib/ab_admin/concerns/admin_addition.rb |
ab_admin-0.2.0 | lib/ab_admin/concerns/admin_addition.rb |