0
1

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.

削除機能の実装(foreign_keyを持つ場合)

Posted at

##概要
Railsで外部キーを持ったモデルを削除する際、単純にルーティングとコントローラーとビューファイルを記述しただけでは実装できず苦しんだのでアウトプットしておきます。

##実装内容
外部キーとして、商品購入に関してデータを結びつけているitem_purchaseを持ったitemというモデルを削除するとします。

このitem_purchaseは、購入した人であるuser_idと、購入された商品であるitem_idを持っています。

ここで、単純にitemを削除すると、item_purchaseにはitem_idだけなくなってしまったレコードが存在してしまいます。

そこで、itemを削除したときにその関連したitem_purchaseのレコードそのものを削除できるように記述していきます。

##実装

まずはモデルのアソシエーションに追加記述しましょう。

models/item.rb
has_one :item_purchase, foreign_key: :item_id, dependent: :destroy
models/item_purchase.rb
belongs_to :item, optional: true

ここでは紹介しませんが、userも紐づいているはずなので、そちらも忘れずに記述します。

あとは通常通りにコントローラーにdestroyメソッドを定義してあげたりすればOKです。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?