0

親モデルと子モデルの両方に対して、Redditと同様の投票機能を実装しようとしています(リンクとコメントですが、私の場合は質問にhas_many回答します)。

投票機能は現在、質問に投票するときに正常に機能しますが、回答に関しては、ユーザーは特定の質問に表示される1つの回答にのみ投票でき、後続の質問には投票できません(SOとは異なり、多くの質問に投票できます)。あなたが望むように答えます..)

私は自分の問題が自分のVote.rbファイルにあることを確認しました(コメントアウトすると機能します..)。これは次のように表示されます。

class Vote < ActiveRecord::Base
  attr_accessible :question_id, :answer_id, :up # up is a boolean used for voting

  belongs_to :user
  belongs_to :question
  belongs_to :answer 

  validates :user_id, :uniqueness => { :scope => :question_id } #this line causes the issue..

end

検証は、ユーザーが質問に1回しか投票できないことを保証することで質問に対して機能しますが、質問のshowページに回答を表示しているので、 user_id/question_id一意性ルールがanswer_idsに対しても機能するのを妨げているというのが私の勘です。可能であれば、最初に検証answer_id/user_id一意性、次に質問/ユーザーのペアになるように検証を構成できるかどうか疑問に思いました。ただし、そのロジックが正しいかどうかはわかりませんが、機能します。

ご協力いただきありがとうございます!


補足資料として、これが私のコントローラーです。

class VotesController < ApplicationController
  def create
    @vote = Vote.where(params[:vote].slice(:question_id, :answer_id).merge(:user_id => current_user.id)).first
    if @vote
      @vote.up = params[:vote][:up]
      @vote.save
    else
      @vote = current_user.votes.create(params[:vote])
    end
    redirect_to :back
  end
end
4

0 に答える 0