Sha256: 5394b740a3bc737191bbb0e41da75c06e973e7e26ae13e64d54421ecbb097498
Contents?: true
Size: 1.31 KB
Versions: 3
Compression:
Stored size: 1.31 KB
Contents
require 'active_support/concern' require 'mongoid/archivable/process_localized_fields' require 'mongoid/archivable/restoration' require 'mongoid/archivable/config' require 'mongoid/archivable/gluten' require 'mongoid/archivable/depot' module Mongoid module Archivable extend ActiveSupport::Concern class << self def config @config ||= Config.new @config end def configure(&proc) yield config end end included do mattr_accessor :archive_storage include Mongoid::Archivable::Gluten const_set('Archive', Class.new) const_get('Archive').class_eval do include Mongoid::Document include Mongoid::Attributes::Dynamic include Mongoid::Archivable::Restoration include Mongoid::Archivable::Depot store_in database: ->{ archive_database_name }, client: ->{ archive_client_name } field :archived_at, type: Time field :original_id, type: String field :original_type, type: String end before_destroy :archive end private def archive self.class.const_get('Archive').create(attributes.except('_id', '_type')) do |doc| doc.original_id = id doc.original_type = self.class.to_s doc.archived_at = Time.now.utc end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mongoid-archivable-1.7.1 | lib/mongoid/archivable.rb |
mongoid-archivable-1.7.0 | lib/mongoid/archivable.rb |
mongoid-archivable-1.6.0 | lib/mongoid/archivable.rb |