我对Rails相当新鲜。我试图创建一个投票系统,人们可以在一个问题中投票给一个答案。
Question.rb
has_many :choices, dependent: :destroy
accepts_nested_attributes_for :choices, reject_if: proc { |attributes| attributes['option'].blank?}, allow_destroy: true
validates_presence_of :title, :user_id
Choice.rb
belongs_to :question
has_many :votes, dependent: :destroy
Vote.rb
belongs_to :voter, class_name: 'User'
belongs_to :choice
validates_presence_of :voter_id, :choice_id
validates_uniqueness_of :voter, scope: :choice
现在我在"投票"模型只检查选择的唯一性(我只能投票选择一次)但我仍然可以在同一个问题中投票选出其他选项。我希望能够在一个问题上投票一次。所以问题和选择是独一无二的。我想我需要创建一个自定义范围,但我不知道如何。
答案 0 :(得分:0)
由于您没有显示您的控制器/视图或架构,因此我做了一些假设,指出您正确的方向。您可以在Vote.rb模型中编写自定义验证,如下所示:(我假设您投票时提交用户的ID,他的选择以及该选项所属的问题。
RefreshControl