LoginSignup
85
67

More than 3 years have passed since last update.

[Rails] dependent: :destroy について

Last updated at Posted at 2019-05-17

#結論
dependent: :destroyを追加することで、
「親モデルを削除する際に、その親モデルに紐づく「子モデル」も一緒に削除できる」ようになります。

例えばユーザーが退会した場合、そのユーザーが投稿した記事も全て消えるように設定するのであれば、必須な知識です。
#dependent: :destroyを追加する
現段階では、このような関係性になっていると思います。

(変更前)user.rb
class User < ApplicationRecord
  has_many :posts
(変更前)post.rb
class Post < ApplicationRecord
  belongs_to :user

このように、user.rbに追加します。
これで、ユーザーが退会した場合はそのユーザーが投稿した記事も全て消えるようになりました。

(変更後)user.rb
class User < ApplicationRecord
  has_many :posts, dependent: :destroy

#子モデルに、さらに子があれば
例えば、このような状況です。
スクリーンショット 2019-05-17 17.05.06.png

こちらの場合であっても、下記のようにすれば親子モデルの関係性と同じような動作をします。

(変更後)post.rb
class Post < ApplicationRecord
  has_many :pictures, dependent: :destroy

※ 関連付け(アソシエーション)の詳細は、こちらを参照してください。

#バージョン
rails 5.1.7

#参考リンク

85
67
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
85
67