Sha256: 0fab9a2c9c493d3fa1d1d21fd54e9dcec029da03bb656021d4c4f21e30999ef3
Contents?: true
Size: 1.93 KB
Versions: 1
Compression:
Stored size: 1.93 KB
Contents
module RailsERD # Entities represent your Active Record models. Entities may be connected # to other entities. class Entity class << self def from_models(domain, models) # @private :nodoc: models.collect { |model| new domain, model }.sort end end # The domain in which this entity resides. attr_reader :domain # The Active Record model that this entity corresponds to. attr_reader :model def initialize(domain, model) # @private :nodoc: @domain, @model = domain, model end # Returns an array of attributes for this entity. def attributes @attributes ||= Attribute.from_model @domain, @model end # Returns an array of all relationships that this entity has with other # entities in the domain model. def relationships @domain.relationships_for(@model) end # Returns the parent entity, if this entity is a descendant. def parent @domain.entity_for(@model.superclass) if descendant? end # Returns +true+ if this entity has any relationships with other models, # +false+ otherwise. def connected? relationships.any? end # Returns +true+ if this entity has no relationships with any other models, # +false+ otherwise. Opposite of +connected?+. def disconnected? relationships.none? end # Returns +true+ if this entity descends from another entity, and is # represented in the same table as its parent. def descendant? !@model.descends_from_active_record? end # Returns the name of this entity, which is the class name of the # corresponding model. def name model.name end def inspect # @private :nodoc: "#<#{self.class}:0x%.14x @model=#{name}>" % (object_id << 1) end def to_s # @private :nodoc: name end def <=>(other) # @private :nodoc: self.name <=> other.name end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails-erd-0.3.0 | lib/rails_erd/entity.rb |