LoginSignup
0
0

More than 3 years have passed since last update.

Rails destroyすると意図しないidが最小のデータが消える

Last updated at Posted at 2020-03-04

凡ミスの備忘録的に残す

発生したこと

agathaテーブル

id name
1 オーエン夫妻
2 エミリー・キャロライン・ブレント
3 トマス・ロジャース
4 ジョン・ゴードン・マッカーサー
5 エセル・ロジャース
6 アンソニー・ジェームズ・マーストン

このようなテーブルがあって、id=6の削除を行った。(つもり)


  christie = Agatha.find_by(6)
  christie.destroy
  // => id:1のオーエン夫妻が削除される。

思い通りの結果にならない。なぜ。。

SQLみたら判明した

christie = Agatha.find_by(6)で実行されるSQLは以下だった。

SELECT `agathas`.* FROM `agathas` WHERE (6) LIMIT 1

WHERE句が意味を成さないので、これで取得できるのはid=6のデータではなく、なんか1件だけ取得する。
今回だとidが最小のデータだった。

間違いを修正

find(6)もしくはfind_by(id: 6)すべきところをミスってた。


# christie = Agatha.find_by(6)
  christie = Agatha.find(6)
  christie.destroy

無事、id=1のアンソニー・ジェームズ・マーストンが消えた。
これで物語どおりである。

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