Sha256: f8de6030bd0afd5623022c47d5206826320c3b77a1f8b96070fc0e5d0974f2b0

Contents?: true

Size: 1.58 KB

Versions: 11

Compression:

Stored size: 1.58 KB

Contents

= dm-constraints

Plugin that adds foreign key constraints to associations.
Currently supports only PostgreSQL and MySQL

All constraints are added to the underlying database, but constraining is implemented in
pure ruby.


=== Constraints

 - :protect     returns false on destroy if there are child records
 - :destroy     deletes children if present
 - :destroy!    deletes children directly without instantiating the resource, bypassing any hooks
                Does not support 1:1 Relationships as #destroy! is not supported on Resource in dm-master
 - :set_nil     sets parent id to nil in child associations
                Not valid for M:M relationships as duplicate records could be created (see explanation in specs)
 - :skip        Does nothing with children, results in orphaned records

By default a relationship will PROTECT its children.


=== Cardinality Notes
 * 1:1
  * Applicable constraints: [:set_nil, :skip, :protect, :destroy]

 * 1:M
  * Applicable constraints: [:set_nil, :skip, :protect, :destroy, :destroy!]

 * M:M
  * Applicable constraints: [:skip, :protect, :destroy, :destroy!]


=== Examples

# 1:M Example
class Farmer
  has n, :pigs #equivalent to: has n, :pigs, :constraint => :protect
end

# M:M Example
class Articles
  has n, :tags, :through => Resource, :constraint => :destroy
end

class Tags
  has n, :articles, :through => Resource, :constraint => :destroy
end

# Intermediary constraints for relationships using :through => Resource
# are automatically inherited from the M:M relationship.

# 1:1 Example
class Farmer
  has 1, :beloved_sheep, :constraint => :protect
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
dm-constraints-1.1.0 README.rdoc
dm-constraints-1.1.0.rc3 README.rdoc
dm-constraints-1.1.0.rc2 README.rdoc
dm-constraints-1.1.0.rc1 README.rdoc
dm-constraints-1.0.2 README.rdoc
dm-constraints-1.0.1 README.rdoc
dm-constraints-1.0.0 README.rdoc
dm-constraints-1.0.0.rc3 README.rdoc
dm-constraints-1.0.0.rc2 README.rdoc
dm-constraints-1.0.0.rc1 README.rdoc
dm-constraints-0.10.2 README.rdoc