_と.の違い
条件分岐の際に疑問と思ったのです
def destroy if @item.user == current_user.id @item.destroy redirect_to root_path end end
現在のユーザーが出品者だった場合のみ削除可能にする。
削除完了したら、トップページに遷移する。
しかし、このままだと出品者以外のユーザーがトップページに遷移しないかもしれません。
なので、redirect_to root_pathをif文の中ではなく、外に記述します。
def destroy if @item.user_id == current_user.id @item.destroy end redirect_to root_path end
そして@item.user_idに修正
current_user.idにidが付いているので、
@item.userにもidが付いてないと正しく比較できない
usersテーブルのidだから.idではなく、_idでないといけないのかな
と思って聞いてみたら、結論としてはどちらでも大丈夫ということでした。
詳しく書くと
@item.user_idの場合 → itemsテーブルからuser_idを取得する
@item.user.idの場合 → itemsテーブルとアソシエーションを組んでいるusersテーブルから該当するidを取得する