Sha256: d6ea82b52888d00030b7df4124a869e4db6172add8d2ff519b53deb307ad06f5
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
require 'purgatory/attribute_accessor_fields' module PurgatoryModule extend ActiveSupport::Concern module ClassMethods def use_purgatory(options={}) AttributeAccessorFields.set_local_attributes_to_save(self,options[:local_attributes]) self.has_many :purgatories, as: :soul end end def purgatize(requester = nil, options = {}) Purgatization.new(self, requester, options) end def purgatory!(requester = nil, options = {}) return nil if self.invalid? return nil if Purgatory.pending_with_matching_soul(self).any? && options[:fail_if_matching_soul] Purgatory.create soul: self, requester: requester, attr_accessor_fields: AttributeAccessorFields.determine_attr_accessor_fields(self) end class Configuration attr_accessor :user_class_name end class Purgatization def initialize(soul, requester, options) @soul = soul @requester = requester @options = options end def method_missing(method, *args, **kwargs) return nil if Purgatory.pending_with_matching_soul(@soul).any? && @options[:fail_if_matching_soul] Purgatory.create soul: @soul, requester: @requester, performable_method: { method: method.to_sym, args: args, kwargs: kwargs } end end class << self def configure(&block) yield(configuration) configuration end def configuration @_configuration ||= Configuration.new end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
purgatory-6.0.3 | lib/purgatory/purgatory_module.rb |
purgatory-6.0.2 | lib/purgatory/purgatory_module.rb |