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