Ruby on rails 无法使相关模型对的模型验证正常工作

Ruby on rails 无法使相关模型对的模型验证正常工作,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试为父模型和子模型实现一个类似于Reddit的投票功能(链接和评论,但我的案例是问题,它有很多答案) 投票功能目前在为问题投票时运行良好,但在回答问题时,用户只能为给定问题出现的一个答案投票,而不能为任何后续的答案投票(与此不同,它允许您投票选择任意多个答案。) 我将我的问题确定在我的Vote.rb文件中(当它被注释掉时,它可以工作…),如下所示: class Vote < ActiveRecord::Base attr_accessible :question_id, :an

我正在尝试为父模型和子模型实现一个类似于Reddit的投票功能(链接和评论,但我的案例是问题,它有很多答案)

投票功能目前在为问题投票时运行良好,但在回答问题时,用户只能为给定问题出现的一个答案投票,而不能为任何后续的答案投票(与此不同,它允许您投票选择任意多个答案。)

我将我的问题确定在我的
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

您的问答模型是什么样子的?使用
:if
:除非
选项,验证可能具有任意条件。但我不认为你可以仅仅通过组合唯一性验证来做到这一点。除非您复制了数据,否则我认为您需要进行自定义验证,以验证用户对每个问题只对一个答案进行投票。谢谢-我最终使用了一组不同的验证。另外,还有人指出,对于我的
投票
模式,多形关联可能是最好的,因为评论和问题都使用投票,但方式不同。
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