Sha256: 19b79f0573eaf42dd1177cb4b0c393dc49f6a2448bff6d66fca6fcaaa42f166a

Contents?: true

Size: 744 Bytes

Versions: 1

Compression:

Stored size: 744 Bytes

Contents

module JsonbAccessor
  class NestedBase
    attr_accessor :attributes, :parent
    alias_method :to_h, :attributes

    delegate :[], to: :attributes
    delegate :nested_classes, :attribute_on_parent_name, to: :class

    def initialize(attributes = {})
      self.attributes = {}.with_indifferent_access

      nested_classes.keys.each do |key|
        send("#{key}=", nil)
      end

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

    def update_parent
      parent.send("#{attribute_on_parent_name}=", self) if parent
    end

    def []=(key, value)
      send("#{key}=", value)
    end

    def ==(suspect)
      self.class == suspect.class && attributes == suspect.attributes
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jsonb_accessor-0.2.0 lib/jsonb_accessor/nested_base.rb