Skip to content

Instantly share code, notes, and snippets.

@danielhum
Forked from ivanyv/base_model.rb
Created December 30, 2011 13:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save danielhum/1539882 to your computer and use it in GitHub Desktop.
Save danielhum/1539882 to your computer and use it in GitHub Desktop.
# app/models/company.rb
class Company
include Mongoid::Document
include ActiveAdmin::Mongoid::Patches
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