Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证电子邮件地址_Ruby On Rails_Devise_Email Confirmation - Fatal编程技术网

Ruby on rails 验证电子邮件地址

Ruby on rails 验证电子邮件地址,ruby-on-rails,devise,email-confirmation,Ruby On Rails,Devise,Email Confirmation,我遵循了Michael Hartl的RoR教程,为用户建模、登录和注册。 现在,我需要验证登录时给出的任何电子邮件都是真实的电子邮件,而不是与验证时的正则表达式匹配的随机字符串 我知道Desive能处理这件事。我不想改变我的工作代码。我怎样才能只使用Desive的电子邮件验证功能?(不希望它为我做任何登录、会话和身份验证等) 如果无法以这种方式使用Desive,那么将Desive插入我的Rails用户模型会有多大的破坏性 谢谢 designe使用regexp验证电子邮件(使用regexp进行验证

我遵循了Michael Hartl的RoR教程,为用户建模、登录和注册。 现在,我需要验证登录时给出的任何电子邮件都是真实的电子邮件,而不是与验证时的正则表达式匹配的随机字符串

我知道Desive能处理这件事。我不想改变我的工作代码。我怎样才能只使用Desive的电子邮件验证功能?(不希望它为我做任何登录、会话和身份验证等)

如果无法以这种方式使用Desive,那么将Desive插入我的Rails用户模型会有多大的破坏性


谢谢

designe使用regexp验证电子邮件(使用regexp进行验证是非常合乎逻辑的)

Deviate使用的regexp是:(从Deviate代码复制)

如果您正在使用Deviate,则可以在Deviate初始值设定项中更改此注册表项

如果您不需要设计,您可以自己实现电子邮件验证

官方rails指南中提供了一个非常好的示例

class EmailValidator
此railscast应该有帮助:


要启用它,请选中或。

您只需验证电子邮件地址字段。不需要宝石!你什么意思?我需要验证/确认电子邮件是否存在。我可以给chair@book.com,它看起来像是我的正则表达式的有效电子邮件地址。有什么想法吗?做你想做的事情并不常见。把问题读得太快了。这确实不常见。。。这就是为什么我要问这个问题:)不幸的是,这可能是重复的不是我要的。正如我在文章中所说,我已经进行了电子邮件验证,这是我在用户模型中设置的第一件事。我说的是电子邮件确认。请参阅我对问题第一个答案的评论+1.查找Desive使用的正则表达式。啊,非常抱歉。非常感谢你的+1。所以我想我可以谈谈我对电子邮件确认的看法。我在我的项目中使用Desive可能只是因为它具有关于电子邮件确认模块的功能。密码加密、会话管理等对我来说比处理确认令牌要容易得多(好吧,这并没有那么难,但当你多次做同样的事情时,它会变得很无聊,确认部分需要很多代码)。我同意你的观点,只有电子邮件确认相关的工作才应该有一个gem。再次,我没有回答你的问题,但是,有很多工作要做的电子邮件确认,奇怪的是,没有图书馆只为这项工作。这正是我想要的,thanx。
  # Email regex used to validate email formats. It simply asserts that
  # an one (and only one) @ exists in the given string. This is mainly
  # to give user feedback and not to assert the e-mail validity.
  mattr_accessor :email_regexp
  @@email_regexp = /\A[^@]+@([^@\.]+\.)+[^@\.]+\z/
class EmailValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
      record.errors[attribute] << (options[:message] || "is not an email")
    end
  end
end