# This class models a vertex in a directed graph. class Vertex < ActiveRecord::Base has_many :sink_edges, :class_name => 'Edge', :foreign_key => 'source_id' has_many :sinks, :through => :sink_edges has_and_belongs_to_many :sources, :class_name => 'Vertex', :join_table => 'edges', :foreign_key => 'sink_id', :association_foreign_key => 'source_id' end