Arale

アパレル、バリスタを経て未経験からのプログラマーになった男の勉強ログ

_と.の違い

条件分岐の際に疑問と思ったのです

  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を取得する