moduleActiveAdmin# This is the class where all the register blocks are instance eval'dclassResourceDSL<DSLprivatedefbelongs_to(target,options={})config.belongs_to(target,options)end# Scope this controller to some object which has a relation# to the resource. Can either accept a block or a symbol # of a method to call.## Eg:## ActiveAdmin.register Post do# scope_to :current_user# end## Then every time we instantiate and object, it would call# # current_user.posts.build## By default Active Admin will use the resource name to build a# method to call as the association. If its different, you can # pass in the association_method as an option.## scope_to :current_user, :association_method => :blog_posts## will result in the following# # current_user.blog_posts.build#defscope_to(*args,&block)options=args.extract_options!method=args.firstconfig.scope_to=block_given??block:methodconfig.scope_to_association_method=options[:association_method]end# Create a scopedefscope(*args,&block)config.scope(*args,&block)end# Configure the index page for the resourcedefindex(options={},&block)options[:as]||=:tableconfig.set_page_presenter:index,ActiveAdmin::PagePresenter.new(options,&block)end# Configure the show page for the resourcedefshow(options={},&block)config.set_page_presenter:show,ActiveAdmin::PagePresenter.new(options,&block)enddefform(options={},&block)config.set_page_presenter:form,ActiveAdmin::PagePresenter.new(options,&block)end# Configure the CSV format## For example:## csv do# column :name# column("Author") { |post| post.author.full_name }# end## csv :separator => ";", :options => { :force_quotes => true } do# column :name# end#defcsv(options={},&block)config.csv_builder=CSVBuilder.new(options,&block)end# Member Actions give you the functionality of defining both the# action and the route directly from your ActiveAdmin registration# block.## For example:## ActiveAdmin.register Post do# member_action :comments do# @post = Post.find(params[:id]# @comments = @post.comments# end# end## Will create a new controller action comments and will hook it up to# the named route (comments_admin_post_path) /admin/posts/:id/comments## You can treat everything within the block as a standard Rails controller# action.# defmember_action(name,options={},&block)config.member_actions<<ControllerAction.new(name,options)title=options.delete(:title)controllerdobefore_filter(:only=>[name]){@page_title=title}iftitledefine_method(name,&block||Proc.new{})endenddefcollection_action(name,options={},&block)config.collection_actions<<ControllerAction.new(name,options)title=options.delete(:title)controllerdobefore_filter(:only=>[name]){@page_title=title}iftitledefine_method(name,&block||Proc.new{})endend# Defined Callbacks## == After Build# Called after the resource is built in the new and create actions.## ActiveAdmin.register Post do# after_build do |post|# post.author = current_user# end# end## == Before / After Create# Called before and after a resource is saved to the db on the create action.## == Before / After Update# Called before and after a resource is saved to the db on the update action.## == Before / After Save# Called before and after the object is saved in the create and update action.# Note: Gets called after the create and update callbacks## == Before / After Destroy# Called before and after the object is destroyed from the database.#delegate:before_build,:after_build,:to=>:controllerdelegate:before_create,:after_create,:to=>:controllerdelegate:before_update,:after_update,:to=>:controllerdelegate:before_save,:after_save,:to=>:controllerdelegate:before_destroy,:after_destroy,:to=>:controller# Standard rails filtersdelegate:before_filter,:skip_before_filter,:after_filter,:around_filter,:to=>:controller# Specify which actions to create in the controller## Eg:# # ActiveAdmin.register Post do# actions :index, :show# end## Will only create the index and show actions (no create, update or delete)delegate:actions,:to=>:controllerendend