前提・実現したいこと
furimaアプリの実装中です。
URLを直接入力しても編集ページに遷移しないよう制限をかけたいです。
発生している問題・エラーメッセージ
ログイン状態で、出品者が売却済みの商品の編集ページに直接URLを入力するとトップページに遷移するように実装したいのですが、今の記述だと編集ページに遷移できてしまいます。
該当のソースコード
class OrdersController < ApplicationController before_action :set_order before_action :authenticate_user! before_action :move_to_index def index @order_address = OrderAddress.new end def create @order_address = OrderAddress.new(order_params) if @order_address.valid? pay_item @order_address.save redirect_to root_path else render :index end end private def order_params params.require(:order_address).permit(:postcode, :prefecture_id, :city, :block, :building, :phone).merge(item_id: params[:item_id], user_id: current_user.id, token: params[:token]) end def pay_item Payjp.api_key = ENV["PAYJP_SECRET_KEY"] Payjp::Charge.create( amount: @item.price, card: order_params[:token], currency: 'jpy' ) end def set_order @item = Item.find(params[:item_id]) end def move_to_index unless current_user && @item.order == nil redirect_to root_path end end end
試したこと
editアクションやupdateアクションの記述しましたが、解決に至りませんでした。
また、検索結果からmove_to_indexの部分の記述を@item.user_id == current_user.id || @item.order == ! nilも試してみましたが変更なしでした。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
このソースにはeditもupdateメソッドもありません。つまり、編集ページ自体、どんな状況であれエラーになりませんか? Controllerにindexとcreateしか存在しないのだから。これで、編集ページを表示できてしまうことがそもそも不思議です。もしこれで動いているならば、Rails標準ではない複雑なことをしているのでしょうし、その場合は、情報が大いに不足しています。少なくともルートとviewがないと状況がわかりません。
あなたの回答
tips
プレビュー