Ruby Regex在Rails 4应用程序中未正确验证

Ruby Regex在Rails 4应用程序中未正确验证,ruby,regex,ruby-on-rails-4,Ruby,Regex,Ruby On Rails 4,我似乎无法在Rails 4应用程序中使用regex进行电子邮件验证 订阅服务器.rb class Subscriber < ActiveRecord::Base validates_uniqueness_of :email, :case_sensitive => false, message: "You're already subscribed!" validates_format_of :email, :with => /@/i, message: "Email

我似乎无法在Rails 4应用程序中使用regex进行电子邮件验证

订阅服务器.rb

class Subscriber < ActiveRecord::Base

  validates_uniqueness_of :email, :case_sensitive => false, message: "You're already subscribed!"
  validates_format_of :email, :with => /@/i, message: "Email is invalid"
  before_save { self.email = email.downcase if email}

end
SubscribersHelper.rb

def subscriber_params
    params.require(:subscriber).permit(:email)
end
上面是一个非常安全的电子邮件正则表达式


上面是一个非常安全的电子邮件正则表达式。

如果您包含任何包含
@
的内容,它将显示为无效,因为你的正则表达式是这样说的。.在一个没有
@
的字符串上尝试它。我会尝试用
/.*.*/
-
替换正则表达式。validates
可能希望正则表达式与整个字符串匹配。@rock321987-用一个不包含@dot work的字符串来尝试它检查此站点:-@JavaNut13-这似乎也无法修复它。关于这可能在哪里被打破的任何其他想法或想法?如果您包括任何包含
@
的内容,它将显示为无效,因为你的正则表达式是这样说的。.在一个没有
@
的字符串上尝试它。我会尝试用
/.*.*/
-
替换正则表达式。validates
可能希望正则表达式与整个字符串匹配。@rock321987-用一个不包含@dot work的字符串来尝试它检查此站点:-@JavaNut13-这似乎也无法修复它。这可能意味着一个更深层次的问题:当我使用gmail电子邮件使用regex时,我得到的
不能为空,无效。当我删除“presence:true”部分时,我只得到
无效的
错误。通过查看其他stackoverflow问题,我最终尝试从控制台创建一个订阅者,这是成功的,没有错误。有什么想法吗?你在用表格测试吗?您使用什么创建子对象?是的。这是一个部分,将在网站的大多数页面上呈现。我会把所有这些代码都贴到上面这可能意味着一个更深层次的问题:当我使用gmail电子邮件使用regex时,我得到的
不能为空,是无效的
。当我删除“presence:true”部分时,我只得到
无效的
错误。通过查看其他stackoverflow问题,我最终尝试从控制台创建一个订阅者,这是成功的,没有错误。有什么想法吗?你在用表格测试吗?您使用什么创建子对象?是的。这是一个部分,将在网站的大多数页面上呈现。我会把所有这些的代码贴上去
include SubscribersHelper

def create
    @subscriber = Subscriber.new
    if @subscriber.save(subscriber_params)
        redirect_to(:back)
        flash.notice = "You are now subscribed"
    else
        redirect_to(:back)
        flash.alert = "There was an error with your subscription: "
        flash.alert += @subscriber.errors.messages.values.join(", ")
    end
end
def subscriber_params
    params.require(:subscriber).permit(:email)
end
 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, length: { maximum: 255 },
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }