Class: RDBr::Metadata::ForeignKey
- Inherits:
-
Data
- Object
- Data
- RDBr::Metadata::ForeignKey
- Defined in:
- lib/rdbr/metadata/keys.rb
Instance Attribute Summary collapse
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#on_delete ⇒ Object
readonly
Returns the value of attribute on_delete.
-
#on_update ⇒ Object
readonly
Returns the value of attribute on_update.
-
#referenced_columns ⇒ Object
readonly
Returns the value of attribute referenced_columns.
-
#referenced_namespace ⇒ Object
readonly
Returns the value of attribute referenced_namespace.
-
#referenced_relation ⇒ Object
readonly
Returns the value of attribute referenced_relation.
Instance Method Summary collapse
- #composite? ⇒ Boolean
-
#initialize(columns:, referenced_relation:, referenced_columns:, name: nil, referenced_namespace: nil, on_update: nil, on_delete: nil) ⇒ ForeignKey
constructor
A new instance of ForeignKey.
Constructor Details
#initialize(columns:, referenced_relation:, referenced_columns:, name: nil, referenced_namespace: nil, on_update: nil, on_delete: nil) ⇒ ForeignKey
Returns a new instance of ForeignKey.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rdbr/metadata/keys.rb', line 25 def initialize( columns:, referenced_relation:, referenced_columns:, name: nil, referenced_namespace: nil, on_update: nil, on_delete: nil ) local_columns = Values.names(columns, field: 'foreign key columns') remote_columns = Values.names(referenced_columns, field: 'referenced columns') if local_columns.length != remote_columns.length raise InvalidMetadataError, 'foreign key column counts must match' end super( name: Values.optional_name(name, field: 'foreign key name'), columns: local_columns, referenced_namespace: Values.optional_name(referenced_namespace, field: 'referenced namespace'), referenced_relation: Values.name(referenced_relation, field: 'referenced relation'), referenced_columns: remote_columns, on_update: Values.deep_copy_freeze(on_update), on_delete: Values.deep_copy_freeze(on_delete) ) end |
Instance Attribute Details
#columns ⇒ Object (readonly)
Returns the value of attribute columns
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def columns @columns end |
#name ⇒ Object (readonly)
Returns the value of attribute name
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def name @name end |
#on_delete ⇒ Object (readonly)
Returns the value of attribute on_delete
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def on_delete @on_delete end |
#on_update ⇒ Object (readonly)
Returns the value of attribute on_update
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def on_update @on_update end |
#referenced_columns ⇒ Object (readonly)
Returns the value of attribute referenced_columns
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def referenced_columns @referenced_columns end |
#referenced_namespace ⇒ Object (readonly)
Returns the value of attribute referenced_namespace
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def referenced_namespace @referenced_namespace end |
#referenced_relation ⇒ Object (readonly)
Returns the value of attribute referenced_relation
16 17 18 |
# File 'lib/rdbr/metadata/keys.rb', line 16 def referenced_relation @referenced_relation end |
Instance Method Details
#composite? ⇒ Boolean
51 52 53 |
# File 'lib/rdbr/metadata/keys.rb', line 51 def composite? columns.length > 1 end |