Sha256: 470219bb8dcc5364bf01fce92ec113301ba17d1afff533a8e4d72ddb34412dca

Contents?: true

Size: 607 Bytes

Versions: 14

Compression:

Stored size: 607 Bytes

Contents

module Billogram
  class RelationBuilder
    attr_reader :resource, :attributes

    def initialize(resource, attributes)
      @resource = resource
      @attributes = attributes
    end

    def call
      resource_relations.each do |relation|
        build_relation(relation)
      end
    end

    private

    def resource_relations
      resource.class.relations
    end

    def build_relation(relation)
      if attrs = attributes.delete(relation.name)
        value = relation.relation_class.build_objects(attrs)
        resource.public_send("#{relation.name}=", value)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
billogram-0.6.5 lib/billogram/relation_builder.rb
billogram-0.6.4 lib/billogram/relation_builder.rb
billogram-0.6.3 lib/billogram/relation_builder.rb
billogram-0.6.2 lib/billogram/relation_builder.rb
billogram-0.6.1 lib/billogram/relation_builder.rb
billogram-0.6.0 lib/billogram/relation_builder.rb
billogram-0.5.6 lib/billogram/relation_builder.rb
billogram-0.5.5 lib/billogram/relation_builder.rb
billogram-0.5.4 lib/billogram/relation_builder.rb
billogram-0.5.3 lib/billogram/relation_builder.rb
billogram-0.5.2 lib/billogram/relation_builder.rb
billogram-0.5.1 lib/billogram/relation_builder.rb
billogram-0.5.0 lib/billogram/relation_builder.rb
billogram-0.4.2 lib/billogram/relation_builder.rb