class CmAdmin::Model
def define_controller
Controller defined for each model
def define_controller 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 if $available_actions.present? CmAdmin.const_set "#{@name}Controller", klass end