Class: RailsERD::Domain::Specialization
- Inherits:
-
Object
- Object
- RailsERD::Domain::Specialization
- Extended by:
- Inspectable
- Defined in:
- lib/rails_erd/domain/specialization.rb
Overview
Describes the specialization of an entity. Specialized entities correspond to inheritance or polymorphism. In Rails, specialization is referred to as single table inheritance, while generalization is referred to as polymorphism or abstract classes.
Instance Attribute Summary collapse
-
#domain ⇒ Object
readonly
The domain in which this specialization is defined.
-
#generalized ⇒ Object
readonly
The source entity.
-
#specialized ⇒ Object
readonly
The destination entity.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #generalization? ⇒ Boolean (also: #polymorphic?)
-
#initialize(domain, generalized, specialized) ⇒ Specialization
constructor
A new instance of Specialization.
- #specialization? ⇒ Boolean (also: #inheritance?)
Methods included from Inspectable
Constructor Details
#initialize(domain, generalized, specialized) ⇒ Specialization
Returns a new instance of Specialization.
60 61 62 63 64 |
# File 'lib/rails_erd/domain/specialization.rb', line 60 def initialize(domain, generalized, specialized) # @private :nodoc: @domain = domain @generalized = generalized || NullGeneralized.new @specialized = specialized || NullSpecialization.new end |
Instance Attribute Details
#domain ⇒ Object (readonly)
The domain in which this specialization is defined.
52 53 54 |
# File 'lib/rails_erd/domain/specialization.rb', line 52 def domain @domain end |
#generalized ⇒ Object (readonly)
The source entity.
55 56 57 |
# File 'lib/rails_erd/domain/specialization.rb', line 55 def generalized @generalized end |
#specialized ⇒ Object (readonly)
The destination entity.
58 59 60 |
# File 'lib/rails_erd/domain/specialization.rb', line 58 def specialized @specialized end |
Class Method Details
.from_models(domain, models) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/rails_erd/domain/specialization.rb', line 11 def from_models(domain, models) # @private :nodoc: models = polymorphic_from_models(domain, models) + inheritance_from_models(domain, models) + abstract_from_models(domain, models) models.sort end |
Instance Method Details
#<=>(other) ⇒ Object
76 77 78 |
# File 'lib/rails_erd/domain/specialization.rb', line 76 def <=>(other) # @private :nodoc: (generalized.name <=> other.generalized.name).nonzero? or (specialized.name <=> other.specialized.name) end |
#generalization? ⇒ Boolean Also known as: polymorphic?
66 67 68 |
# File 'lib/rails_erd/domain/specialization.rb', line 66 def generalization? generalized.generalized? end |
#specialization? ⇒ Boolean Also known as: inheritance?
71 72 73 |
# File 'lib/rails_erd/domain/specialization.rb', line 71 def specialization? !generalization? end |