Rails でカスケード削除を設定できますか?
概要
これがおそらくインターネットのどこかにあることはわかっていますが、Stackoverflow では答えが見つからないので、ここで知識ベースを少し強化できるかもしれないと思いました。
私は Ruby と Rails の初心者ですが、会社では Ruby と Rails にかなりの投資を行っているので、もう少し詳しく理解しようとしています。
データベースからではなく「モデル」からアプリケーションを設計するという考え方に切り替えるのは私にとって困難でした。そのため、従来データベースで行っていたすべての設計作業を、データベース内でどのように行うかを考えようとしています。代わりに Rails モデル。
では、私が自分自身に課した最新のタスクは、カスケード削除を実行するように Rails データベース モデルを構成する方法を見つけることです。これを行う簡単な方法はありますか?それとも、MySql にアクセスしてこれを設定する必要がありますか?
解決策
:dependent オプションを :delete_all に設定することもできます。 :delete_all は、単一の SQL ステートメントを発行して、すべての子レコードを削除します。このため、:delete_all を使用するとパフォーマンスが向上する可能性があります。
has_many :memberships, dependent: :delete_all