Sha256: eef62f5b2174656049ed23b6bc14ceafd7a7c12f1ff91304aa607897698188eb

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

module Neo4j
  module Rails
    module Relationships

      # TODO, reuse for incoming relationships ?
      class OutgoingRelationship
        include Enumerable

        def initialize(from_node, mapper)
          @from_node = from_node
          @mapper    = mapper
        end

        def <<(other)
          @mapper.create_relationship_to(@from_node, other)
        end

        def each(&block)
          # TODO Direction
          @mapper.each &block
        end
      end

      
      def write_changed_relationships
        @relationships.each_value do |mapper|
          mapper.persist
        end
      end

      def valid_relationships?
        !@relationships.values.find {|mapper| !mapper.valid?}
      end

      def _decl_rels_for(type)
        dsl = super
        if false && persisted?
          dsl
        else
          @relationships[type] ||= Mapper.new(type, dsl)
        end
      end


      def clear_relationships
        @relationships = {}
      end


      def outgoing(rel_type)
        if persisted?
          super
        else
          @relationships[rel_type] ||= Mapper.new(rel_type)
          OutgoingRelationship.new(self, @relationships[rel_type])
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
neo4j-1.0.0.beta.23-java lib/neo4j/rails/relationships/relationships.rb
neo4j-1.0.0.beta.22-java lib/neo4j/rails/relationships/relationships.rb
neo4j-1.0.0.beta.21-java lib/neo4j/rails/relationships/relationships.rb