Sha256: 448655529cf13cd4df95305d7b9385d5f35c0046acd69783a12772061da73d6c
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
module DeletedAt module Relation def self.prepended(subclass) subclass.class_eval do attr_writer :deleted_at_scope end end def deleted_at_scope @deleted_at_scope ||= :Present end def deleted_at_select scoped_arel = case deleted_at_scope when :Deleted vanilla.dup.where(table[klass.deleted_at[:column]].not_eq(nil)) when :Present vanilla.dup.where(table[klass.deleted_at[:column]].eq(nil)) end end def vanilla # @vanilla ||= klass.const_get(:All).unscope(:where).freeze @vanilla ||= klass.unscoped.tap do |rel| rel.deleted_at_scope = :All end.freeze end # Rails 4.x def from_value if (subselect = deleted_at_select) [subselect, ::ActiveRecord::Base.connection.quote_table_name(table_name)] else super end end # Rails 5.x def from_clause if (subselect = deleted_at_select) ::ActiveRecord::Relation::FromClause.new(subselect, ::ActiveRecord::Base.connection.quote_table_name(table_name)) else super end end def delete_all(*args) if args.pop ActiveSupport::Deprecation.warn(<<~STR) Passing conditions to delete_all is not supported in DeletedAt To achieve the same use where(conditions).delete_all. STR end update_all(klass.deleted_at_attributes) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
deleted_at-0.6.0.pre.2 | lib/deleted_at/relation.rb |