Ruby on Rails 3,多个域的电子邮件验证?

Posted

技术标签:

【中文标题】Ruby on Rails 3,多个域的电子邮件验证?【英文标题】:Ruby on Rails 3, Email Validation for Multiple Domains? 【发布时间】:2011-07-28 21:58:12 【问题描述】:

大家好,我在这里遇到了问题。有没有办法拥有两种可接受的电子邮件格式?

您看,我正在构建的网站需要让用户注册到某个域,并且学生和教职员工共享不同的域。例如:name@mail.domain.ac.uk 和 name@domain.ac.uk。我希望导师和学生能够注册。到目前为止我已经尝试过了:

EMAIL_STAFF_REGEX = /\A[\w+\-.]+@mail.domain.ac.uk/i
email_regex = /\A[\w+\-.]+@domain.ac.uk/i

validates :email, :presence   => true,
                  :format     =>  :with => email_regex,
                                   :with => EMAIL_STAFF_REGEX,

如果有任何帮助,我将不胜感激。

【问题讨论】:

【参考方案1】:

我假设您正在拆分正则表达式,因为您希望以后能够使用正则表达式来判断他们是导师还是学生。

试试

tutor_subdomain = mail
EMAIL_REGEX = /\A[\w+-.]+@(:?#tutor_domain.)?domain.ac.uk/i
TUTOR_REGEX = /\A[\w+-.]+@#tutor_domain.domain.ac.uk/i

def tutor?
  email =~ TUTOR_REGEX
end

我建议将导师列设置为实际字段,以便您可以对其进行查询,然后使用验证来确保电子邮件匹配相同的格式。

validates:email, :format => :with => STUDENT_REGEX
validates:email, :format => :with => TUTOR_REGEX, :if => :tutor?

【讨论】:

以上是关于Ruby on Rails 3,多个域的电子邮件验证?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 中文本区域的最大长度

在 ruby​​ on rails 3 中通过电子邮件创建订阅

如何在 ruby​​ on rails 中集成多个支付网关(多个商家)?

mailchimp 邮件程序不能在 ruby​​ on rails 中工作

Ruby on Rails 中的 Sendgrid / 电子邮件发送问题(托管在 Heroku 上)

Ruby on rails邮件程序+ Mailgun标记为垃圾邮件