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

时间:2011-04-04 04:11:21

标签: ruby-on-rails ruby ruby-on-rails-3 email-validation

嘿伙计们,我在这里遇到了一个问题。有没有办法让两种可接受的电子邮件格式?

您看,我正在构建的网站需要让用户注册某个域,并且学生和员工共享不同的域。例如: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 个答案:

答案 0 :(得分: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?