今日も今日とて誰の為でもない自分の為だけの記事を書く。
投稿者、ログイン者の見れるサイトを限定する場合
該当するコントローラーの最初に書く(今回はitems)
before_action :authenticate_user!, except: [:index, :show]
#トップページと詳細ページ以外はログインしている人だけしか見れない
ログイン以外の人はトップと詳細ページ以外を見ようとするとコントローラー内の最後に飛んで
def move_to_index
@item = Item.find(params[:id])
unless @item.user == current_user
redirect_to action: :index
end
unlessは投稿者と今のログイン者が同じじゃなかったらトップページに飛ぶ、の意味。
同じコントローラー内でここ大事!
def item_params
params.require(:item).permit(:title, :catch_copy, :image, :concept).merge(user_id: current_user.id)
end
itemsはマージしない。
でも別コントローラー内ではマージする時もある(例:commentsコントローラー)。
def comment_params
params.require(:comment).permit(:content).merge(user_id: current_user.id, item_id: params[:item_id])
end
いやあ、難しいなあ。。。