Class: Metasploit::ERD::Relationship

Inherits:
Object
  • Object
show all
Defined in:
lib/metasploit/erd/relationship.rb

Overview

The relationship in an Entity-Relationship Diagram. Modelled using an #association extracted from a Class<ActiveRecord::Base> using reflection.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(association) ⇒ Relationship

Returns a new instance of Relationship.

Parameters:

  • association (ActiveRecord::Associations::BelongsToAssociation)


20
21
22
# File 'lib/metasploit/erd/relationship.rb', line 20

def initialize(association)
  @association = association
end

Instance Attribute Details

#associationActiveRecord::Associations::BelongsToAssociation (readonly)

A belongs_to association.

Returns:

  • (ActiveRecord::Associations::BelongsToAssociation)


8
9
10
# File 'lib/metasploit/erd/relationship.rb', line 8

def association
  @association
end

Instance Method Details

#class_setSet<Class<ActiveRecord::Base>>

Set of classes pointed to by this association. Differs from association.klass as #class_set properly handles polymorphic associations by finding all Class<ActiveRecord::Base> that has_many <inverse>, as: <name> and so can fulfill belongs_to <name>, polymorpic: true.

Returns:

  • (Set<Class<ActiveRecord::Base>>)


29
30
31
32
33
34
35
# File 'lib/metasploit/erd/relationship.rb', line 29

def class_set
  if association.options[:polymorphic]
    polymorphic_class_set
  else
    Set.new([association.klass])
  end
end