我有我的應用程序設置,用戶可以在其中爲電影撰寫評論。我想要做的是限制用戶爲每部電影創建一個評論。我已經成功在我的評語控制器來完成這個像這樣:只允許用戶爲每部電影創建一個評論
class ReviewsController < ApplicationController
before_action :has_reviewed, only [:new]
....
def has_reviewed?
if Review.where(user_id: current_user.id, movie_id: @movie.id).any?
redirect_to movie_reviews_path
flash[:notice] = "You've already written a review for this movie."
end
end
end
如果我現在有麻煩在翻譯這個相同的邏輯到我與我的處置制定和CanCanCan的輔助方法索引視圖模板。
<% if user_signed_in? && ... %> # current_user has already created a review for this movie
<%= link_to "Edit Review", edit_movie_review_path(@movie, review) %>
<% else %>
<%= link_to "Write a Review", new_movie_review_path %>
<% end %>
另外:有什麼辦法來提高我的has_reviewed查找?方法?我覺得有更好的方法來編寫它,但不能確定最合適的修復方法。
嗨,我有一個類似的例子,但我有點困惑。你有@album或@movie嗎? – jedi