1. yamato1491038

    No comment

    yamato1491038
Changes in tags
Changes in body
Source | HTML | Preview
@@ -1,38 +1,38 @@
#はじめに
レコード削除時に関連づけられたレコードが存在するときに、例外やエラーを発生させたい。
外部キーで使用されていると親要素が消されては困るというシチュエーションです。
削除しようとするとRubyのエラー画面が出てしまう。
#原因
`Model`に関係づけされたモデルに対する挙動を定義するが無いからでした。
マイグレーションファイルの`foreign key: True`だけでは不十分でした。
#対策
`Model`に`dependentオプション`を記述することで解決しました。
該当のモデルに以下の記述をします。
```ruby
+#contractというモデル
class Contract < ApplicationRecord
has_many :...., dependent: :restrict_with_error
end
```
アソシエーション記述の後に`dependent: :restrict_with_error`と記述することで`destory`できないときのエラーを表示することができた。
以下の条件分が成り立ち解決しました!。
```ruby
-#contractというモデル
+#contractというモデルのコントローラー
def destroy
contract = Contract.find(params[:id])
if contract.destroy
redirect_to contract_path, notice: "選んだ契約を削除しました"
else
redirect_to contract_path, alert: "使用中のため削除できません"
end
end
```
#参照
・https://dorarep.page/articles/rails-dependent#dependent_restrict_with_exception_restrict_with_error