Sha256: e938e21df3e88ff8b6dda29327c82d8b46b3a4a9657ace238b87c5bbde60e545

Contents?: true

Size: 868 Bytes

Versions: 15

Compression:

Stored size: 868 Bytes

Contents

require 'active_support/core_ext/module/attribute_accessors.rb'

require 'purgatory/active_record_descendant_attribute_accessors'

module AttributeAccessorFields

  def self.set_local_attributes_to_save(klass,attrs)
    klass.instance_variable_set(:@local_attributes_for_purgatory,attrs)
  end

  def self.determine_attr_accessor_fields(obj)
    local_attributes = obj.class.instance_variable_get(:@local_attributes_for_purgatory)

    variables = if local_attributes == :all
                  ActiveRecordDescendantAttributeAccessors.attr_accessor_instance_variables(obj)
                else
                  Array(local_attributes).map { |attribute|
                    attribute.to_s.prepend('@').to_sym
                  }
                end

    variables.inject({}) do |hash,var|
      hash[var] = obj.instance_variable_get(var)
      hash
    end
  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
purgatory-6.0.3 lib/purgatory/attribute_accessor_fields.rb
purgatory-6.0.2 lib/purgatory/attribute_accessor_fields.rb
purgatory-6.0.1 lib/purgatory/attribute_accessor_fields.rb
purgatory-6.0.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-4.0.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-3.1.2 lib/purgatory/attribute_accessor_fields.rb
purgatory-3.1.1 lib/purgatory/attribute_accessor_fields.rb
purgatory-3.1.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-3.0.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.14.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.13.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.12.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.11.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.10.0 lib/purgatory/attribute_accessor_fields.rb
purgatory-2.9.0 lib/purgatory/attribute_accessor_fields.rb