【发布时间】:2014-09-21 01:18:02
【问题描述】:
我有一个用户模型,它有一个 "has_many" :emails 关联到一个电子邮件模型。用户的主电子邮件只是用户的“电子邮件”列。但是,我的这种关联允许一个用户使用多个电子邮件地址。
问题在于,当创建新用户并检查“validates_uniqueness_of :email”时,它只检查其他用户的电子邮件列,而不是电子邮件模型中存储的可能的辅助电子邮件。
我试图在我的用户模型中编写一个自定义验证方法,该方法试图通过给定的电子邮件地址找到用户并且它可以工作,但随后它在我的代码中搞砸了其他事情,比如能够添加辅助电子邮件地址或分配主要的。
有没有办法这样说:“validates_uniqueness_of :email through Email.all.each do {|e| errors.add :email, “this is invalid” if e.email == :email}”
这看起来真的很草率,但我要做的就是根据另一个模型实例的电子邮件地址在创建时验证用户电子邮件地址的唯一性。
附:如果您对 e.email 感到困惑,Email 是模型,它有一个 email 列来存储电子邮件地址。
【问题讨论】:
-
用户模型中还需要
email字段的任何特殊原因?
标签: ruby-on-rails validation email associations