Sha256: e177ff25757a7f431e8edd6464d4194f67ff29ce2734a5f4aab4bea64e5dc5e2

Contents?: true

Size: 1.14 KB

Versions: 13

Compression:

Stored size: 1.14 KB

Contents

module ObjectAttorney

  module AttributeAssignment

    def assign_attributes(attributes = {})
      return if attributes.blank?

      attributes.each do |name, value|
        send("#{name}=", value) if allowed_attribute(name)
      end

      mark_for_destruction_if_necessary(self, attributes)
    end

    protected #################### PROTECTED METHODS DOWN BELOW ######################

    def parsing_arguments(attributes, object)
      if !attributes.is_a?(Hash) && object.blank?
        object = attributes
        attributes = nil
      end

      attributes = {} if attributes.blank?
      
      [attributes.symbolize_keys, object]
    end

    def allowed_attribute(attribute)
      respond_to?("#{attribute}=")
    end

    def attributes_without_destroy(attributes)
      return nil unless attributes.is_a?(Hash)

      _attributes = attributes.dup
      _attributes.delete("_destroy")
      _attributes.delete(:_destroy)

      _attributes.symbolize_keys
    end

    def attributes_order_destruction?(attributes)
      _destroy = attributes["_destroy"] || attributes[:_destroy]
      ["true", "1", true].include?(_destroy)
    end

  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
object_attorney-2.10.7 lib/object_attorney/attribute_assignment.rb
object_attorney-2.10.6 lib/object_attorney/attribute_assignment.rb
object_attorney-2.10.5 lib/object_attorney/attribute_assignment.rb
object_attorney-2.10.3 lib/object_attorney/attribute_assignment.rb
object_attorney-2.10.2 lib/object_attorney/attribute_assignment.rb
object_attorney-2.10.1 lib/object_attorney/attribute_assignment.rb
object_attorney-2.9.4 lib/object_attorney/attribute_assignment.rb
object_attorney-2.9.3 lib/object_attorney/attribute_assignment.rb
object_attorney-2.9.2 lib/object_attorney/attribute_assignment.rb
object_attorney-2.9.0 lib/object_attorney/attribute_assignment.rb
object_attorney-2.8.1 lib/object_attorney/attribute_assignment.rb
object_attorney-2.8.0 lib/object_attorney/attribute_assignment.rb
object_attorney-2.6.12 lib/object_attorney/attribute_assignment.rb