Sha256: 21685ac2b05650bf8c28a4987b609ceeaeb6d18ebe196c15634fda4853c08fa5
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module Paranoia def self.included(klazz) klazz.extend Query end module Query def paranoid? ; true ; end def only_deleted all.tap { |x| x.default_scoped = false }.where.not(deleted_at: nil) end def with_deleted all.tap { |x| x.default_scoped = false } end end def destroy run_callbacks(:destroy) { delete } end def delete return if new_record? or destroyed? update_column :deleted_at, Time.now end def restore! update_column :deleted_at, nil end def destroyed? !self.deleted_at.nil? end alias :deleted? :destroyed? end class ActiveRecord::Base def self.acts_as_paranoid alias :destroy! :destroy alias :delete! :delete include Paranoia default_scope { where(:deleted_at => nil) } end def self.paranoid? ; false ; end def paranoid? ; self.class.paranoid? ; end # Override the persisted method to allow for the paranoia gem. # If a paranoid record is selected, then we only want to check # if it's a new record, not if it is "destroyed". def persisted? paranoid? ? !new_record? : super end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
paranoia-2.0.0 | lib/paranoia.rb |