記載されている内容は2019年04月09日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。Railsにおいてデータ削除する際には、物理削除と論理削除が存在します。物理削除は理解していても論理削除についてしっかりと理解していない方も多いのではないのでしょうか。この記事では、データの削除の仕方から論理削除の解説を行っていきます。シェアツイートはてブ目次destroyとはRailsのdestroyを使ったデータの削除方法を解説データベースからデータを論理削除するまとめhttps://rubyonrails.org/destroyとはdestroyとは、削除する際に使用するメソッドです。Railsでアプリを開発する際に、必要となる場合が多い機能です。この記事では、このdestroyについてや他のメソッドについて説明します。基本的なdestroyの書き方Railsにおいて、基本的なCRUDのControllerのdestroyメソッドについては以下のような書き方がされます。モデル名.find(params[:id])endend以上のコードでは、所々省略して削除機能について書きました。先ほどでは、Controllerに削除機能を書きました。次は、RailsConsoleを利用してデータの削除を行います。データを削除する基本的な方法ですのでこの知識を身に着けるようにしましょう。※consoleでデータを削除する時は誤って違うデータを削除しないように気をつけましょう。destroyメソッドを試す為の事前準備Railsアプリ作成とモデル作成destroyメソッドを試すために事前準備を行います。Railsアプリを作成してモデルを作ります。ターミナルまたはコマンドプロンプトで以下のコマンドを打ちます。db:migrate以上でRailsアプリが作成され、モデルも作成されました。モデルにデータを追加RailsConsoleを立ち上げて作成したモデルにcreateコマンドを使用してデータを追加していきます。consoleItem.create(name:"taro",age:20,price:1000)Item.create(name:"rina",age:21,price:2000)Item.create(name:"taku",age:22,price:3000)Item.create(name:"mamoru",age:23,price:4000)適当に4件のレコードを追加しました。Item.allのコマンドを打って、実際にモデルにデータが追加されたか確認してみましょう。データベースからデータを削除する方法データベースからデータを削除する方法として4種類あります。・destroyメソッド・destroy_allメソッド・deleteメソッド・delete_allメソッド実行の仕方としては、ターミナルまたはコマンドプロンプトでconsoleを立ち上げて、コマンドを打ちます。以上のメソッドについて説明していきます。destroyメソッドの使い方destroyメソッドの構成は以下のようになっています。モデル名.destroy(主キー値)このコマンドで、指定された主キー値のデータが削除されます。先ほど作成したモデルを使用して試してみましょう。RailsConsoleを立ち上げます。console現在、テーブルに入っているデータを参照します。Item.allそうすると先ほど作成したデータが出てきます。idというのがそれぞれのデータの主キー値となります。destroyメソッドではこの主キー値を指定してデータを削除します。Item.destroy(1)主キー値1番目のデータが削除されます。destroy_allメソッドの使い方destroy_allメソッドとは、特定の条件に合うデータをまとめて削除します。この特定の条件というのがwhereメソッドを使用して指定します。構文は以下のとおりです。モデル名.where(条件).destroy_all先ほどの作成したモデルを使用して試してみます。コンソール上で以下のコマンドを打ちます。2..4).destroy_allこのコードでは、idが2~4までのデータを全て削除するといった処理を行っています。Item.allのコマンドを打って、実際にデータが削除されたか確かめて見ましょう。deleteメソッドの使い方deleteメソッドとは、destroyメソッドと同じようにデータを一件削除するメソッドです。destroyメソッドと違う点としては、関連するデータは削除されないことです。deleteメソッドの制約を理解していないうちは、destroyメソッドを優先して利用しましょう。deleteメソッドの構文は以下のとおりです。モデル名.delete(主キー値)先ほど作成したモデルで試してみましょう。console上で以下のコマンドを打ちます。※モデルにデータがない場合は、再びcreateコマンドでデータを追加して下さい。Item.delete(5)以上のコマンドで、idが5のデータが削除されます。Item.allで実際に削除されたか確認してみましょう。delete_allメソッドの使い方delete_allメソッドとは、destroy_allメソッドと同じように特定の条件に合うデータをまとめて削除します。この特定の条件というのがwhereメソッドを使用して指定します。destroy_allメソッドと違う点としては、関連するデータは削除されないことです。delete_allメソッドの構文は以下のとおりです。モデル名.whrere(条件).delete_alldelete_allメソッドを先ほど作成したモデルで試してみましょう。6..8).delete_allこのコードは、idが6~8のデータを削除しているといった処理を行なっています。Item.allのコマンドを打って実際にデータが削除されたか確認してみましょう。データベースからデータを論理削除するデータの削除機能として物理削除と論理削除があります。物理削除とはデータベースからデータを完全に削除することであり、復元が不可能です。論理削除とは何でしょうか?以下の記事ではその論理削除について解説してきます。論理削除とは論理削除とは、実際にデータを削除するのではなく、削除されたとみなす目印(フラッグ)と呼ばれるカラムを設定する事によりユーザには削除しているかのように振る舞うことができ、必要時には削除したデータは元の状態に戻せるものを指します。物理削除とは違い、論理削除はどのような時に使用するのかと言うとサービスにおいてユーザーがサービスを退会した後も、システム上一定期間はユーザーのデータを保持しなければならない時などに使用できます。Railsで論理削除を使用するためにはRailsにおいて論理削除を使用するためにはparanoiaと呼ばれるgemを実装することによって容易に論理削除を使用することができます。次の項目からは'paranoia'について導入の手順と使用確認について説明していきます。'2.4.1'paranoiaを導入するためには、導入したい各自RailsアプリのGemfileに'paranoia'を追加します。※各自モデルを作成しておいて下さい。ターミナルまたはコマンドプロンプトにて以下のコマンドを打ちます。deleted_at:datetime:index打ち終わったら以下のコマンドを打ちます。...end以上によってparanoiaの導入は終わりです。paranoia使用確認paranoiaを使用確認するためにconsoleを立ち上げます。ターミナルまたはコマンドプロンプトで以下のコマンドを打ちます。c※元々作成したモデルにはデータを入れといてください。console上にてdestroyを使用して削除します。モデル名.destroy(1)と打ち、主キー値1番目のデータを消すようにします。削除すると以下のログが出てきます。16:52:42">]>deleted_atにタイムスタンプが入り、物理削除ではなく論理削除になります。モデル名.only_deletedを打ちます。論理削除されたデータの復元の仕方は、モデル名.restore(id)です。モデル名.restoreです。大量のレコードを復元する場合は、以下のコマンドを打ちます。idN])2分以内に削除されたレコード、およびそれらの依存的に破壊された関連したレコードだけを復元したい場合は、以下のコマンドを打ちます。2.minutes)まとめいかがでしたか?この記事では、Railsにおいて基本的なdestroyとdeleteの使い方を説明しました。終盤では論理削除について説明しました。論理削除は、使用する場面も多いと思うので勉強することを勧めます。物理削除を使用する際は慎重にデータを選んで、本当にそのデータを削除するのか確認して削除してください。パソコンは良いことも悪いことに関しても打ち込んだコマンドに対して、従順に処理を行ってくれます。物理削除してしまったデータは復元することができないためデータを削除する際には気をつけてください。file.2:営業マンとして活躍し、海外留学。file.4:独学よりもスクールで。他人と同じことはしない。