Sha256: 13fd659b9ff7e9d2413d9a745e5d15b9a902cd2379861cb7fc2dd414b45e50fd

Contents?: true

Size: 878 Bytes

Versions: 4

Compression:

Stored size: 878 Bytes

Contents

module Neo4j::ActiveRel
  # A container for ActiveRel's :inbound and :outbound methods. It provides lazy loading of nodes.
  class RelatedNode

    class InvalidParameterError < StandardError; end

    def initialize(node = nil)
      @node = valid_node_param?(node) ? node : (raise InvalidParameterError, 'RelatedNode must be initialized with either a node ID or node' )
    end

    def == (obj)
      loaded if @node.is_a?(Fixnum)
      @node == obj
    end

    def loaded
      @node = @node.respond_to?(:neo_id) ? @node : Neo4j::Node.load(@node)
    end

    def loaded?
      @node.respond_to?(:neo_id)
    end

    def method_missing(*args, &block)
      loaded.send(*args, &block)
    end

    def class
      loaded.send(:class)
    end

    private

    def valid_node_param?(node)
      node.nil? || node.is_a?(Integer) || node.respond_to?(:neo_id)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
neo4j-3.0.1 lib/neo4j/active_rel/related_node.rb
neo4j-3.0.0 lib/neo4j/active_rel/related_node.rb
neo4j-3.0.0.rc.5 lib/neo4j/active_rel/related_node.rb
neo4j-3.0.0.rc.4 lib/neo4j/active_rel/related_node.rb