こんにちは私は、ユーザーがすでに書いたレビューを更新できる方法があるかどうか疑問に思っていました。cancanを使用してみましたが、いくつかの問題が発生したため、もっと簡単な方法があるかどうかを調べます。これは、レビューコントローラーの「new」メソッドからのコードです
def new
if logged_in?
@review = Review.new(:film_id => params[:id], :name =>
User.find(session[:user_id]).name)
session[:return_to] = nil
else
session[:return_to] = request.url
redirect_to login_path, alert: "You must be logged in to write a review"
end
end
および「create」メソッド
def create
# use the class method 'new' with the parameter 'review', populated
# with values from a form
@review = Review.new(params[:review])
# attempt to save to the database, the new review instance variable
if @review.save
# use the class method 'find' with the id of the product of the
# saved review and assign this product object to the variable 'product'
film = Film.find(@review.film.id)
# redirect the reviewer to the show page of the product they reviewed,
# using the product variable, and send a notice indicating the review
# was successfully added
redirect_to film, notice: "Your review was successfully added"
else
# if the review could not be saved, return / render the new form
render action: "new"
end
end
すでに商品のレビューを書いている場合は、ユーザーにレビューを編集してもらいたい。同じ商品について同じユーザーから2件のレビューをもらう代わりに。