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 3 中通过电子邮件创建订阅
如何在 ruby on rails 中集成多个支付网关(多个商家)?
mailchimp 邮件程序不能在 ruby on rails 中工作