public
Created

  • Download Gist
strong_admin.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
module StrongAdmin
 
extend ActiveSupport::Concern
 
def initialize
@instance_name = active_admin_config.resource_name.downcase
@klass = active_admin_config.resource_name.constantize
 
@column_names = @klass.columns.map do |column|
unless [:id, :created_at, :updated_at].include?(column.name.to_sym)
case column.type
when :datetime, :date, :time
([column.name.to_sym] + (1..5).inject([]) { |acc, x| acc << :"#{column.name}(#{x}i)" })
else
column.name.to_sym
end
end
end.flatten
 
super
end
 
def create
resource_obj = instance_variable_set("@#{@instance_name}", @klass.new(params[@instance_name.to_sym].permit(*@column_names)))
 
if resource_obj.save
redirect_to send("admin_#{@instance_name}_path", resource_obj), notice: "Created #{@instance_name}."
else
render :new
end
end
 
def update
resource_obj = instance_variable_set("@#{@instance_name}", @klass.find(params[:id]))
 
if resource_obj.update_attributes(params[@instance_name.to_sym].permit(*@column_names))
redirect_to send("admin_#{@instance_name}_path", resource_obj), notice: "Updated #{@instance_name}."
else
render :edit
end
end
 
end
whatever.rb
Ruby
1 2 3
ActiveAdmin.register Whatever do
controller do; include StrongAdmin; end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.