1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】dependentの設定

Last updated at Posted at 2020-12-18

本投稿の目的

・Railsについての議事録です。

学習に使った教材

Udemyの以下2つの教材を参考にまとめました。 ・["はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"](https://www.udemy.com/course/the-ultimate-ruby-on-rails-bootcamp/) ・["フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座"](https://www.udemy.com/course/rails-kj/)

○dependent の設定

・1対多のmodelの関係において,model(1)のcolumnが消去されると,そのcolumnに紐づくmodel(多)のcolumnは必要なくなる ・これを自動的に消去してくれる設定であるdependentには以下2つがある ・どちらもmodel(1)ファイルに対して記述を追加する

○dependent: :delete_all

model(1).rb
class model(1) < ApplicationRecord
has_many :model(), dependent: :delete_all
end

・model1の削除=紐付けデータも同時削除 になる
・親が削除されると子たちは自動で消される
・例):親であるquestionのcolumn情報が削除されると,それに紐づいたanswer のcolumn情報も一緒に削除される

○dependent: :destroy

model(1).rb
class model(1) < ApplicationRecord
has_many :model(), dependent: :destroy
end

delete_allと同じ処理がされるが,オブジェクトを1つずつ消していく
・パフォーマンスはdelete_allに比べて低い
・紐付けが2階層以上ある場合は,こちらを使用しないとできないことがある
*(基本的に1階層の時は,delete_allを使用する)

○dependentの有効範囲

・紐づけ自動削除機能は,destroyアクション時のみ有効
・controllerのdeleteメソッドをdestroyメソッドに変更しておく必要がある


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?