Class RailsERD::Domain::Relationship::Cardinality

  1. lib/rails_erd/domain/relationship/cardinality.rb
Parent: Object

Constants

N = Infinity = 1.0/0

Attributes

destination_range [R] Returns a range that indicates the destination (right) cardinality.
source_range [R] Returns a range that indicates the source (left) cardinality.

Public instance methods

cardinality_class ()

Returns an array with the cardinality classes for the source and destination of this cardinality. Possible return values are: [1, 1], [1, N], [N, N], and (in theory) [N, 1].

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 89
        def cardinality_class
          [source_cardinality_class, destination_cardinality_class]
        end
destination_optional? ()

Returns true if the destination (right side) is not mandatory.

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 54
        def destination_optional?
          destination_range.first < 1
        end
inverse ()

Returns the inverse cardinality. Destination becomes source, source becomes destination.

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 60
        def inverse
          self.class.new destination_range, source_range
        end
name ()

Returns the name of this cardinality, based on its two cardinal numbers (for source and destination). Can be any of :one_to_one:, :one_to_many, or :many_to_many. The name :many_to_one also exists, but Rails ERD always normalises these kinds of relationships by inversing them, so they become :one_to_many associations.

You can also call the equivalent method with a question mark, which will return true if the name corresponds to that method. For example:

cardinality.one_to_one?
#=> true
cardinality.one_to_many?
#=> false
[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 44
        def name
          CLASSES[cardinality_class]
        end
source_optional? ()

Returns true if the source (left side) is not mandatory.

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 49
        def source_optional?
          source_range.first < 1
        end

Protected instance methods

destination_cardinality_class ()

The cardinality class of the destination (right side). Either 1 or Infinity.

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 101
        def destination_cardinality_class
          destination_range.last == 1 ? 1 : N
        end
source_cardinality_class ()

The cardinality class of the source (left side). Either 1 or Infinity.

[show source]
# File lib/rails_erd/domain/relationship/cardinality.rb, line 96
        def source_cardinality_class
          source_range.last == 1 ? 1 : N
        end