gpt4 book ai didi

ruby-on-rails - 验证唯一性的 Rails 异常

转载 作者:行者123 更新时间:2023-12-04 16:48:22 24 4
gpt4 key购买 nike

我想让登录我网站的用户只能对一个问题点赞一次,但我也希望未登录的用户也能点赞。

目前我有这个来确保登录用户只投票一次

模型

class Yesvote < ActiveRecord::Base
belongs_to :user
belongs_to :question
validates_uniqueness_of :user, scope: :question
end

Controller

def yesvote
@question = Question.find(params[:id])
if current_user != nil
yesvote = Yesvote.create(yes: params[:yes], user: current_user, question: @question)
else
yesvote = Yesvote.create(yes: params[:yes], question: @question)
end
if yesvote.valid?
redirect_to :back
else
flash[:danger] = "once only!"
redirect_to :back
end
end

目前,如果一个用户在没有登录的情况下点赞,它会阻止未登录的用户进一步点赞。基本上,它可以防止多个 yesvotes 的 user_id 为 null/nil

最佳答案

这可能有帮助:-

validates_uniqueness_of :user_id, :allow_blank => true, :scope => [:question_id]

:allow_blank 或 :allow_nil,将分别跳过对空白和 nil 字段的验证。

关于ruby-on-rails - 验证唯一性的 Rails 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com