Sha256: 48d07e2aa7f9f0cd3ea0b3090fbcc2a4392350df739be92052f63a9ac5b4d92f

Contents?: true

Size: 880 Bytes

Versions: 2

Compression:

Stored size: 880 Bytes

Contents

module Commons
  module Concerns
    module Extensions
      module SoftDeleted
        extend ActiveSupport::Concern

        included do
          before_validation :check_not_deleted, on: [:update]

          def deleted?
            raise ActiveModel::MissingAttributeError unless has_required_fields?
            self.deleted_at.present?
          end

          def self.default_scope
            raise ActiveModel::MissingAttributeError unless has_attribute?(:deleted_at)
            where(deleted_at: nil)
          end
        end

        private

        def check_not_deleted
          raise ActiveModel::MissingAttributeError unless has_required_fields?
          raise ActiveRecord::RecordInvalid if self.deleted_at_in_database.present?
        end

        def has_required_fields?
          self.has_attribute?(:deleted_at)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
commons_yellowme-0.16.0 lib/commons/concerns/extensions/soft_deleted.rb
commons_yellowme-0.15.0 lib/commons/concerns/extensions/soft_deleted.rb