dm-constraints(v1.2.0)のREADMEの日本語訳
試しに訳してみた。 訳は適当なので間違ってるところもあると思う。
dm-constraints
DataMapperのアソシエーションに外部キー制約を追加するプラグインです。 現在はPostgreSQLとMySQLのみサポートしています。
全ての制約は基礎となるデータベースに追加されますが、制約はピュアRubyで実装されています。
制約
- :protect 子供のレコードが存在する場合、destroyした時にfalseを返す
- :destroy 子供が存在する場合、削除する
- :destroy! 全てのフックを迂回する為に、リソースのインスタンス化を行わずに直接子を削除する
#destroy! はdm-masterのResorcesをサポートしていないため、1対1関連はサポートしていません
- :set_nil 子のアソシエーションのparent idにnilを設定します
重複したレコードを作成してしまうため、多対多関連には有効ではありません(specsの説明を参照)
- :skip 子供に何も行いません。結果として孤立したレコードが出来ます
デフォルトは :protect で関連は自分の子供を保護します。
カーディナリティノート
* 1:1
* 適用可能な制約: [:set_nil, :skip, :protect, :destroy]
* 1:M
* 適用可能な制約: [:set_nil, :skip, :protect, :destroy, :destroy!]
* M:M
* 適用可能な制約: [:skip, :protect, :destroy, :destroy!]
例
# 1:M Example class Post has n, :comments # これは次と同じです: # has n, :comments, :constraint => :protect end # M:M Example class Article has n, :tags, :through => Resource, :constraint => :destroy end class Tags has n, :articles, :through => Resource, :constraint => :destroy end # :through => Resource を利用する関連の仲介の制約 # は自動的に多対多関連の制約から継承されます。 # 1:1 Example class User has 1, :address, :constraint => :protect end