Skip to content

Instantly share code, notes, and snippets.

@Fivell
Created April 9, 2015 18:07
Show Gist options
  • Select an option

  • Save Fivell/15f39050b8db7092684f to your computer and use it in GitHub Desktop.

Select an option

Save Fivell/15f39050b8db7092684f to your computer and use it in GitHub Desktop.

Revisions

  1. Fivell created this gist Apr 9, 2015.
    43 changes: 43 additions & 0 deletions active_admin_active_resource.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    module ActiveAdmin
    module Filters
    module FormtasticAddons
    alias :old_seems_searchable? :seems_searchable?
    def seems_searchable?
    return false if ransacker?
    old_seems_searchable?
    end

    def klass
    @object.try(:object).try(:klass)
    end

    def ransacker?
    klass.try(:_ransackers).try(:key?, method.to_s)
    end

    def scope?
    context = Ransack::Context.for klass rescue nil
    context.respond_to?(:ransackable_scope?) && context.ransackable_scope?(method.to_s, klass)
    end
    end
    end
    end

    module ActiveAdmin
    module Helpers
    module Collection

    def collection_size(c = collection)
    if c.is_a? ActiveRecord::Relation
    c = c.except :select, :order
    c.group_values.present? ? c.count.count : c.count
    else
    c.respond_to?(:count) ? c.count : 0
    end
    end

    end
    end
    end


    40 changes: 40 additions & 0 deletions payment.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    class Payment < MyActiveResource

    schema do
    attribute 'customer_id', :integer
    attribute 'amount', :integer
    attribute 'created_at', :string
    attribute 'success', :boolean
    end

    def self.column_names
    content_columns
    end

    def self.content_columns
    if @content_columns.nil?
    @content_columns = Array.new
    known_attributes.each do |name|
    @content_columns << ResourceColumn.new(name)
    end
    end
    @content_columns
    end

    def self.columns
    content_columns
    end

    class ResourceColumn
    attr_reader :name

    def initialize(name)
    @name = name
    end

    def type
    :string
    end
    end

    end
    25 changes: 25 additions & 0 deletions resource_example.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    ActiveAdmin.register Payment do

    actions :index
    config.batch_actions = false
    filter :created_at_gteq, as: :date_time_picker

    controller do

    def find_collection
    @search = OpenStruct.new(params[:q] || {})
    result = Payment.find(:all, params: {
    order: params.fetch(:order, 'created_at_desc'),
    page: params.fetch(:page, 1),
    per_page: params.fetch(:per_page, 50),
    q: params[:q] || {}
    })
    #this uses https://github.com/Fivell/activeresource-response,
    # but can be replaced with other ActiveResource pagination implementation
    limit = result.http_response['X-Limit-Value'].to_i
    offset = result.http_response['X-Offset-Value'].to_i
    total = result.http_response['X-Total-Count'].to_i
    Kaminari.paginate_array(result, limit: limit, offset: offset, total_count: total)
    end
    end
    end