Sha256: fe217eedf82713c6d9d4c685a1e9415ad9880224a726f62bea337a93e81a064c
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
module StorageUnit module Core extend ActiveSupport::Concern included do default_scope { where(default_scope_hash) } define_model_callbacks :trash define_model_callbacks :recover end module ClassMethods def default_scope_hash { storage_unit_opts[:column] => nil } end def with_deleted self.all.unscope(where: storage_unit_opts[:column]) end def deleted_only with_deleted.where.not(default_scope_hash) end end def trashed? send(storage_unit_opts[:column]).present? end def trash! run_callbacks :trash do update_columns trash_hash(DateTime.now) trash_dependents end end def trash_dependents Array(storage_unit_opts[:cascade]).each do |x| send(x).update_all trash_hash(DateTime.now) end end def recover!(opts = {}) run_callbacks :recover do update_columns trash_hash(nil) recover_dependents end end def recover_dependents Array(storage_unit_opts[:cascade]).each do |x| send(x).with_deleted.update_all trash_hash(nil) end end def trash_hash(value) {}.tap { |h| h[storage_unit_opts[:column]] = value } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
storage_unit-0.2.0 | lib/storage_unit/core.rb |