Ruby on Rails/has_manyのdependentオプション http://www.ark-web.jp/sandbox/wiki/390.html

http://railsapi.masuidrive.jp/module/ActiveRecord::Associations::ClassMethods/has_many

 :dependent - if set to :destroy all the associated objects are destroyed alongside
 this object by calling their destroy method.

つまり、

 class foo < ActiveRecord::Base
   has_many :bar, :dependent => :destroy
 end

のようにしておき、fooのオブジェクトをdestroyすると、barのdestroyも呼び出されるそうです。

If set to :delete_all all associated objects are deleted without calling their
destroy method.

つまり、

 class foo < ActiveRecord::Base
   has_many :bar, :dependent => :delete_all
 end

だと、fooをdestroyすると、barのdestroyを呼び出さずにdeleteされるそうです。

If set to :nullify all associated objects’ foreign keys are set to NULL without
calling their save callbacks.

つまり、

 class foo < ActiveRecord::Base
   has_many :bar, :dependent => :nullify
 end

だと、fooをdestroyすると、barのsaveを呼び出すことなく、barのfooへのforeign keyを NULL
にセットするらしいです。

NULL可なりレーションの時の対処ですね。

NOTE: :dependent => true is deprecated and has been replaced with :dependent => :destroy.

:dependent => trueは :dependent => :destroyと同じ。

投稿者志田 | パーマリンク

| append.gif

tag: Ruby on Rails


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-09 (火) 20:16:09 (4690d)

アークウェブのサービスやソリューションはこちら