質問: Post.find(params[:id]) post.destroy ←ここでで止まります。 redirect_to :back, notice: '投稿を削除しました。' end ``` リレーションの設定 ``` # 投稿 class Post < ActiveRecord::Base has_many :comments, :dependent => :destroy end # コメント class Comment < ActiveRecord::Base belongs_to :post end ``` ### 確認したところなど 1.モデルの名前は単数形なっているか? =>単数形です。 コントローラーは複数形 2.has_manyは複数形、belongs_toは単数形 3.その他に :dependent => :destroy ←を設定していない場合はPostは削除されます。 (もちろんCommentは残ります。) dependent: :delete_all ←を試しましたが同じエラー内容となります。 何か設定等抜けていますでしょうか? ここらへんを確認すると良いなど御座いましたらご指摘頂けると幸いです。 宜しくお願いします。
回答: saveメソッドやupdateメソッドでコメントが関連付けされて保存されてないからなきがします。 saveメソッド実行後rails dbconsoleで該当テーブルにクエリを投げてみるか。rails cでComment.allで該当のposts_idをきちんと参照出来ているCommentが生成されているかどうか確認してください。 ちなみに子要素を多段階保存する場合も色々な明示的にコードを付け足す必要があるので付け加えられているか確認してみてください。 最近のベストプラクティスはformモデルとserviceモデルを作ってロジックとパラメータバリデーションを分離させる方法なので御存知なければ調べてみると良いかもしれないです。