首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨多列的续集唯一验证

跨多列的续集唯一验证
EN

Stack Overflow用户
提问于 2016-01-07 20:50:16
回答 2查看 319关注 0票数 0

我正在尝试使用Sequel和一个独一无二数据库添加一个MySQL验证。

如果column2的值与column3中的现有值相匹配,那么我希望它失败验证,如下(不工作)示例所示:

代码语言:javascript
运行
复制
validates_unique(:email_address){|ds| ds.where('unconfirmed_email NOT LIKE confirmed_email')}

下面是一个木琴,在这里我使用了这个查询来获得所需的结果:

代码语言:javascript
运行
复制
SELECT DISTINCT value
FROM (
  SELECT DISTINCT confirmed_email AS value FROM email_addresses
  UNION SELECT DISTINCT unconfirmed_email AS value FROM email_addresses
) AS derived

我很难把它映射到续集验证。如有任何指导,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-07 23:10:12

添加一个自定义验证而不是validates_unique解决了这个问题。

代码语言:javascript
运行
复制
errors.add(:unconfirmed_email, 'email in use') if email_in_use?(unconfirmed_email)

还有一种私人方法

代码语言:javascript
运行
复制
def email_in_use?(email)
  EmailAddress.where(confirmed_email: email).first ? true : false
end
票数 1
EN

Stack Overflow用户

发布于 2016-01-07 21:11:17

索引column3,只需查询您正在验证的column2中的任何值。如果查询生成记录,那么验证就会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34664898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档