タイトルの通り、scaffoldで作ったCRUDの、editやdestroyアクションに制限を設定する方法について。
いつも通りに書くなら、
def destroy
redirect_to blogs_path unless current_user == @blog.user
省略
end
こうすると、destroyアクション内で、その後にも同じredirect_toのpathが使われているため、こんなエラーとなる。
AbstractController::DoubleRenderError
そこで、returnを使う。
def destroy
return redirect_to blogs_path unless current_user == @blog.user
省略
end
これでエラー解決
実例
def destroy
return redirect_to homes_path unless current_user == @customer.user
@customer.destroy
respond_to do |format|
format.html { redirect_to homes_path, alert: t('views.messages.destroy_customer') }
format.json { head :no_content }
end
end
redirect_to homes_pathを後にも使用しているため、ダブってエラーとなる。
コメント