gpt4 book ai didi

ruby-on-rails - Rails - 基于另一个表验证唯一性

转载 作者:行者123 更新时间:2023-12-04 06:07:27 26 4
gpt4 key购买 nike

我有帖子的投票和投票表。我可以验证投票和投票模型中的唯一性,以确保用户不能多次投票或投票。我想验证这两种模型的唯一性,以便用户不能对他们已经投票赞成的帖子进行投票,反之亦然。我试过自定义验证,userfaved,定义如下,但它不工作。

 class Vote < ActiveRecord::Base

validates_uniqueness_of :user_id, :scope => :article_id #allows only one vote

validate :userfaved

def userfaved
if Votedown.where( :user_id => :user_id, :artcle_id => :article_id).any?
errors.add(:user_id, 'already voted on this')
end
end



class Votedown < ActiveRecord::Base

validates_uniqueness_of :user_id, :scope => :article_id #allows only one votedown

validate :userfaved

def userfaved
if Vote.where(:user_id=> :user_id, :article_id => :article_id).any?
errors.add(:user_id, 'already voted on this')
end
end

最佳答案

您的验证中似乎存在错误:您传递给 where 的哈希值中的值是符号。将其更改为以下内容,它应该可以工作:

Votedown.where( :user_id => self.user_id, :article_id => self.article_id).any?

但我认为有一种更简单的方法可以做到这一点。你能要一张 table 吗 Votes并为其添加一个属性来记录它是向上还是向下?这将使您的唯一性检查非常简单。如果你真的想要单独的类,你可以使用单表继承:有一个 votes表,父类(super class) Vote ,以及两个子类, VoteUpVoteDown .

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

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