public
Created — forked from ivanyv/base_model.rb

  • Download Gist
active_admin_mongoid_patch.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
# config/initializers/active_admin_mongoid_patch.rb
 
require "active_admin"
require "active_admin/resource_controller"
require 'ostruct'
 
module ActiveAdmin
class Namespace
# Disable comments
def comments?
false
end
end
 
class Resource
def resource_table_name
resource.collection_name
end
 
# Disable filters
def add_default_sidebar_sections
end
end
 
class ResourceController < ::InheritedResources::Base
# Use #desc and #asc for sorting.
def sort_order(chain)
params[:order] ||= active_admin_config.sort_order
table_name = active_admin_config.resource_table_name
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
chain.send($2, $1)
else
chain # just return the chain
end
end
 
# Disable filters
def search(chain)
chain
end
end
 
module Mongoid
COLUMN_TYPES = { Bignum => :integer, Array => :string }
 
module Patches
def self.included(base)
raise 'Include ActiveAdmin::Mongoid::Patches after Mongoid::Document' unless base.respond_to?(:collection_name)
base.extend ClassPatches
end
 
def column_for_attribute(attr)
self.class.columns.detect { |c| c.name == attr.to_s }
end
 
module ClassPatches
HIDDEN_COLUMNS = %w(_id _type)
 
def content_columns
fields.map do |name, field|
next if HIDDEN_COLUMNS.include?(name)
OpenStruct.new.tap do |c|
c.name = field.name
c.type = ActiveAdmin::Mongoid::COLUMN_TYPES[field.type] || field.type.to_s.downcase.to_sym
end
end.compact
end
 
def columns
content_columns
end
end
end
end
end
company.rb
Ruby
1 2 3 4 5 6 7 8
# app/models/company.rb
 
class Company
include Mongoid::Document
include ActiveAdmin::Mongoid::Patches
 
field ...
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.