我正在尝试使用Sequel和一个独一无二数据库添加一个MySQL验证。
如果column2的值与column3中的现有值相匹配,那么我希望它失败验证,如下(不工作)示例所示:
validates_unique(:email_address){|ds| ds.where('unconfirmed_email NOT LIKE confirmed_email')}下面是一个木琴,在这里我使用了这个查询来获得所需的结果:
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我很难把它映射到续集验证。如有任何指导,将不胜感激。
发布于 2016-01-07 23:10:12
添加一个自定义验证而不是validates_unique解决了这个问题。
errors.add(:unconfirmed_email, 'email in use') if email_in_use?(unconfirmed_email)还有一种私人方法
def email_in_use?(email)
  EmailAddress.where(confirmed_email: email).first ? true : false
end发布于 2016-01-07 21:11:17
索引column3,只需查询您正在验证的column2中的任何值。如果查询生成记录,那么验证就会失败。
https://stackoverflow.com/questions/34664898
复制相似问题