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