class CmAdmin::Model

def define_controller

If model is User, controller will be UsersController
Controller defined for each model
def define_controller
  if $available_actions.present?
    klass = Class.new(CmAdmin::ResourceController) do
      include Pundit::Authorization
      rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
      $available_actions.each do |action|
        define_method action.name.to_sym do
          # controller_name & action_name from ActionController
          @model = CmAdmin::Model.find_by(name: controller_name.classify)
          @model.params = params
          @action = CmAdmin::Models::Action.find_by(@model, name: action_name)
          @model.current_action = @action
          send(@action.controller_action_name, params)
          # @ar_object = @model.try(@action.parent || action_name, params)
        end
      end
      def pundit_user
        Current.user
      end
      private
      def user_not_authorized
        flash[:alert] = 'You are not authorized to perform this action.'
        redirect_to CmAdmin::Engine.mount_path + '/access-denied'
      end
    end
  end
  CmAdmin.const_set "#{@name}Controller", klass
end