我正在創建一個類似於reddit的簡單upvote/downvote系統,用戶可以upvote/downvote的東西,並在需要時改變他們的想法。Rails控制器忽略查詢
我有一個頁面,使我的控制器的'創建'行動的AJAX調用。控制器沒有問題創建記錄並返回正確的js.erb。然而,我想看看現有的帖子是否存在,如果是的話,我想摧毀它。我的控制器看起來是這樣的:
def create
@vote = GameVote.new
@vote.game_id = params[:game_id]
@vote.vote = params[:vote]
@vote.user_id = session[:user_id]
existing_vote = GameVote.where(whatever)
respond_to do |format|
if @vote.save
format.js
end
end
end
它只是似乎忽略中間查詢,阻止我,如果它試圖保存新條目之前就存在摧毀它。有任何想法嗎?
你的問題是什麼呢?如何找到現有的投票?如何刪除它?根據您所展示的代碼,問題是什麼非常不清楚。 – Mischa 2012-04-10 06:16:54
Hey @Mischa - existing_vote = GameVote.where(不管)不會被解僱。在服務器控制檯中,我沒有看到正在運行的查詢,我無法弄清楚原因。有了適當的參數,它在軌道控制檯中運行良好,但控制器似乎在實踐中忽略了它。我想知道這是爲什麼。 – opticon 2012-04-10 06:22:44
這是因爲Rails只在需要時才執行查詢。你不用'existing_vote'做任何事情,所以不執行任何查詢。它是Rails中的內置優化。 – Mischa 2012-04-10 06:41:20