Sha256: ad61f86470a8148ca3a48048b10374e07247f5d1005ae8e4729684821e2c72df

Contents?: true

Size: 641 Bytes

Versions: 8

Compression:

Stored size: 641 Bytes

Contents

# frozen_string_literal: true
module C
  module NonDeletable
    extend ActiveSupport::Concern

    included do
      has_one :non_delete, as: :non_deletable, dependent: :destroy

      before_create do
        create_non_delete!
      end

      def destroy
        create_non_delete! unless non_delete
        non_delete.update(deleted: true)
      end

      def deleted?
        create_non_delete! unless non_delete
        non_delete.deleted
      end
    end

    def self.included(klass)
      klass.instance_eval do
        default_scope { includes(:non_delete).where(c_non_deletes: { deleted: false }) }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
cd2_catton_cms-1.1.35 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.34 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.33 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.32 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.31 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.30 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.20 app/models/concerns/c/non_deletable.rb
cd2_catton_cms-1.1.10 app/models/concerns/c/non_deletable.rb