ruby-on-rails – Rails:验证忽略某些记录的唯一性

ruby-on-rails – Rails:验证忽略某些记录的唯一性,第1张

概述我们正在使用 Ruby on Rails 4. 我的“事件”模型有: >“标题”字段,可以是任意字符串 >一个convention_id字段,它是Convention表的索引 >状态字段,可以是“建议”,“讨论”,“已接受”,“已拒绝”或“已丢弃”. 我想创建一个validates语句,确保标题在约定中是唯一的.这很容易. validates :title, :uniqueness => { :s 我们正在使用 Ruby on Rails 4.

我的“事件”模型有:

>“标题”字段,可以是任意字符串
>一个convention_ID字段,它是Convention表的索引
>状态字段,可以是“建议”,“讨论”,“已接受”,“已拒绝”或“已丢弃”.

我想创建一个valIDates语句,确保标题在约定中是唯一的.这很容易.

valIDates :Title,:uniqueness => { :scope => :convention_ID }

做我想要的大部分.但我想忽略任何状态为“已拒绝”或“已删除”的记录.我真正想要的是向sql RAILs添加一些WHERE子句,但我不确定如何.

谢谢你的帮助.

解决方法 我找到了答案.以下似乎按预期工作:

valIDates_uniqueness_of :Title,scope: :convention,conditions: -> { where.not(status: ['Dropped','Rejected']) }

生成的sql是

SELECT 1 AS one FROM "events"  WHERE ("events"."Title" = 'Panel' AND          "events"."ID" != 2 AND          "events"."convention_ID" = 1) AND        ("events"."status" NOT IN ('Dropped','Rejected'))  liMIT 1

我认为这正是我想要的.

再次感谢您的帮助.

总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails:验证忽略某些记录的唯一性全部内容,希望文章能够帮你解决ruby-on-rails – Rails:验证忽略某些记录的唯一性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1232710.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存