Use with https://github.com/ebeigarts/mongoid_active_admin_app/blob/master/config/initializers/active_admin_mongoid_patches.rb to enable Mongoid support in ActiveAdmin.
# app/models/my_model.rb | |
module MyApp | |
module Model | |
def self.included(base) | |
base.send :include, Mongoid::Document | |
base.send :include, Mongoid::Timestamps | |
base.send :include, ActiveAdmin::Mongoid::Patches | |
end | |
end | |
end |
# app/models/company.rb | |
class Company | |
include MyApp::Model | |
field ... | |
end |
# app/models/active_admin/mongoid/patches.rb | |
require 'ostruct' | |
module ActiveAdmin | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment