I would like to set it to be impossible to transition to someone else's post screen.
Rspec got stuck and cannot be resolved.
I looked into it, but I couldn't find a solution, so I would appreciate it if you could give me some advice.
Thank you for your cooperation.
Test Results
1) Test Posts Test Edit Test Transition to Edit Other People's Posts Screen Unable to Transition
Failure/Error: expect(current_path).to eq('/books')
expected: "/books"
get: "/books/2/edit"
(compared using==)
books controller
classBooksController <ApplicationController
before_action —Authenticate_user!
def create
@book=Book.new(book_params)
@book.user_id=current_user.id
@books=Book.all
if
@book.save
flash [:notice] = "successfully"
redirect_to book_url(@book)
else
render —index
end
end
def index
@book=Book.new
@books=Book.all
end
def show
@book=Book.find (params[:id])
end
default
@book=Book.find (params[:id])
end
default update
@book=Book.find (params[:id])
if
@book.update(book_params)
flash[:notice] = "You have updated book successfully."
redirect_to book_path (@book.id)
else
render —edit
end
end
def destroy
@book=Book.find (params[:id])
@book.destroy
redirect_to books_url
end
private
defbook_params
param.require(:book).permit(:title,:body)
end
def correct_user
@book=Book.find (params[:id])
if [email protected]
redirect_to user_path(current_user)
end
end
end
I would like to set it to not be able to transition to someone else's post screen.
current_user
user has_manybooks
Assume the above.
class BooksController <ApplicationController
before_action —Authenticate_user!
before_action —set_book
def show
redirect_to books_url if @book.blank?
end
default_book
@book=current_user.books.find_by (id:params[:id])
end
end
For general web services, 404
is often used when accessing other people's pages.
In that case, it might be better to do the following:
class BooksController <ApplicationController
before_action —Authenticate_user!
before_action —set_book
def show
end
default_book
@book=current_user.books.find(params[:id])
end
end
If you don't know the following, please check it out.
© 2024 OneMinuteCode. All rights reserved.