Sha256: 629390827afc88c6364d9a93f02c2b541ba946b1260a7fe206a32a64cff3d3be

Contents?: true

Size: 834 Bytes

Versions: 2

Compression:

Stored size: 834 Bytes

Contents

# frozen_string_literal: true

module ActsAsGraphDiagram # :nodoc:
  ##
  # This module represents a act of edge.
  module EdgeScopes
    extend ActiveSupport::Concern

    included do
      # returns Edge records where destination is the record passed in.
      # @param [Node] node
      scope :select_destinations, ->(node) { where(destination_id: node.id, destination_type: node.class.name) }

      # returns Edge records where departure is the record passed in.
      # @param [Node] node
      scope :select_departures, ->(node) { where(departure_id: node.id, departure_type: node.class.name) }

      # returns Edge records where departure or destination are the record passed in.
      # @param [Node] node
      scope :select_connections, ->(node) { select_destinations(node).or(select_departures(node)) }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
acts_as_graph_diagram-0.1.1 lib/acts_as_graph_diagram/edge_scopes.rb
acts_as_graph_diagram-0.1.0 lib/acts_as_graph_diagram/edge_scopes.rb