module ActiveRecord::Resource::Callbacks

Public Class Methods

check_resource_methods() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 45
def self.check_resource_methods
  raise not_creatable_error unless method_defined? :resource_create
  raise no_creation_validations_error unless method_defined? :resource_create_validations

  raise not_deletable_error unless method_defined? :resource_delete
  raise no_deletable_validations_error unless method_defined? :resource_delete_validations

  raise not_updatable_error unless method_defined? :resource_delete
  raise no_updatable_validations_error unless method_defined? :resource_delete_validations
end
included(base) click to toggle source

When this module is included, which it is done by default

# File lib/active_record/resource/callbacks.rb, line 5
def self.included(base)
  # Exetend AR::Base
  base.class_eval do
    # When a class inherits from AR::Base, all models do
    def self.inherited(child_class)
      # On the class that Inherits AR::Base
      unless child_class == ActiveRecord::SchemaMigration
        child_class.class_eval do
          def self.new(*args)
            check_resource_methods

            super(*args)
          end

          def handle_delete
            resource_delete_validations
            if self.errors.present?
              return false
            end
            return resource_delete
          end
        end

        child_class.instance_eval do
          # Add Hooks
          before_create :resource_create
          before_validation(:resource_create_validations, on: :create)

          before_update :resource_update
          before_validation(:resource_update_validations, on: :update)

          before_destroy :handle_delete
        end
      end

      super
    end



    def self.check_resource_methods
      raise not_creatable_error unless method_defined? :resource_create
      raise no_creation_validations_error unless method_defined? :resource_create_validations

      raise not_deletable_error unless method_defined? :resource_delete
      raise no_deletable_validations_error unless method_defined? :resource_delete_validations

      raise not_updatable_error unless method_defined? :resource_delete
      raise no_updatable_validations_error unless method_defined? :resource_delete_validations
    end

    def self.not_creatable_error
      "The model #{self} is createable, but does not implement #resource_create"
    end

    def self.no_creation_validations_error
      "The model #{self} is createable, but does not implement #resource_create_validations"
    end

    def self.not_deletable_error
      "The model #{self} is deletable, but does not implement #resource_delete"
    end

    def self.no_deletable_validations_error
      "The model #{self} is deletable, but does not implement #resource_delete_validations"
    end

    def self.not_updatable_error
      "The model #{self} is updatable, but does not implement #resource_update"
    end

    def self.no_updatable_validations_error
      "The model #{self} is updatable, but does not implement #resource_update_validations"
    end
  end
end
inherited(child_class) click to toggle source

When a class inherits from AR::Base, all models do

Calls superclass method
# File lib/active_record/resource/callbacks.rb, line 9
def self.inherited(child_class)
  # On the class that Inherits AR::Base
  unless child_class == ActiveRecord::SchemaMigration
    child_class.class_eval do
      def self.new(*args)
        check_resource_methods

        super(*args)
      end

      def handle_delete
        resource_delete_validations
        if self.errors.present?
          return false
        end
        return resource_delete
      end
    end

    child_class.instance_eval do
      # Add Hooks
      before_create :resource_create
      before_validation(:resource_create_validations, on: :create)

      before_update :resource_update
      before_validation(:resource_update_validations, on: :update)

      before_destroy :handle_delete
    end
  end

  super
end
new(*args) click to toggle source
Calls superclass method
# File lib/active_record/resource/callbacks.rb, line 13
def self.new(*args)
  check_resource_methods

  super(*args)
end
no_creation_validations_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 60
def self.no_creation_validations_error
  "The model #{self} is createable, but does not implement #resource_create_validations"
end
no_deletable_validations_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 68
def self.no_deletable_validations_error
  "The model #{self} is deletable, but does not implement #resource_delete_validations"
end
no_updatable_validations_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 76
def self.no_updatable_validations_error
  "The model #{self} is updatable, but does not implement #resource_update_validations"
end
not_creatable_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 56
def self.not_creatable_error
  "The model #{self} is createable, but does not implement #resource_create"
end
not_deletable_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 64
def self.not_deletable_error
  "The model #{self} is deletable, but does not implement #resource_delete"
end
not_updatable_error() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 72
def self.not_updatable_error
  "The model #{self} is updatable, but does not implement #resource_update"
end

Public Instance Methods

handle_delete() click to toggle source
# File lib/active_record/resource/callbacks.rb, line 19
def handle_delete
  resource_delete_validations
  if self.errors.present?
    return false
  end
  return resource_delete
end