編集画面で情報を変更すると全てのレコードが変更される謎現象が起きた

 

 写真を投稿できるアプリケーションについて学んでいるとき。

その投稿した写真の詳細を編集する詳細ページを実装していたのだが、なぜか一つの写真のデータを変更するとそのテーブルの全てのカラムが編集したデータと同じになってしまった。

User_id から写真から何から何まで…

 

一体何が原因なんだと考えてみた。

・そのフォームのform_with のパス

・コントローラーのid 

・まさかfile_field の記述?

 

そしてコントローラーの

redirect_to item_path(currentuser.id)

なんでcurrent_user?? 

編集して更新したらその写真データの詳細画面に戻るからitem.id が必要だろう、と思い @item.id に変更すると機能が正常に戻り、編集して更新するとその更新したレコードだけ変更されるようになった。

 

def update
@item = Item.find(params[:id])
if @item.update(item_params)
redirect_to item_path(current_user.id)
else
render :edit
end
end

↓ これで修正された

 

def update
@item = Item.find(params[:id])
if @item.update(item_params)
redirect_to item_path(@item.id)
else
render :edit
end
end

 

 しかしながら、current_user.id が原因であるならそのcurrent_user.id と同じ item.id の詳細ページに飛ぶはずだと思ったが。

 

ターミナルをみてみると、Update されたあと、さらにごちゃごちゃモデムがロードされて勝手に色々と変わっていた。

 

原因を探ろうと思ったが、SQLに関しては不勉強でその場で解読出来なかったのと、その時に出てきた処理文を残しておかなかったため、結局原因不明になってしまった。

 

データベースについてしっかり学ばなければと決意した1日だった。