Skip to content

Instantly share code, notes, and snippets.

@XORwell
Forked from brianjlandau/soft_delete.rb
Last active December 19, 2015 05:59
Show Gist options
  • Save XORwell/5907969 to your computer and use it in GitHub Desktop.
Save XORwell/5907969 to your computer and use it in GitHub Desktop.
rails 4 flavored version
module SoftDelete
extend ActiveSupport::Concern
included do
define_model_callbacks :soft_delete
define_model_callbacks :recover
default_scope where(deleted_at: nil)
class_eval do
class << self
alias_method :with_deleted, :unscoped
end
end
end
module ClassMethods
def only_deleted
unscoped.where.not(deleted_at: nil)
end
end
def soft_delete
run_callbacks :soft_delete do
update_attribute(:deleted_at, Time.current)
end
end
def recover
run_callbacks :recover do
update_attribute(:deleted_at, nil)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment