Ruby on rails 我在创建isn之前的时间';即使我的方法返回nil,也无法工作。

Ruby on rails 我在创建isn之前的时间';即使我的方法返回nil,也无法工作。,ruby-on-rails,callback,Ruby On Rails,Callback,这是我的用户类: class User < ActiveRecord::Base has_secure_password before_save :valid_email? validates :username, presence: true, uniqueness: true validates :first_name, presence: true enum role: [ :flyer, :admin ]

这是我的用户类:

class User < ActiveRecord::Base
  has_secure_password

  before_save :valid_email?

  validates :username, presence: true,
                       uniqueness: true
  validates :first_name, presence: true

  enum role: [ :flyer, :admin ]

  def valid_email?
    email_checker
  end

  private

  def email_checker
    self.email.match(/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$/)
  end

end

如果电子邮件为here@here@这儿还是这儿。here@here. 那么发生了什么呢?

因为您只需调用
self.email.match
方法。如果您想验证文件,您应该使用或创建验证器


在您的情况下,您可以从gems(即,gems)创建或使用电子邮件验证程序

因为您只需调用
self.email.match
方法。如果您想验证文件,您应该使用或创建验证器


在您的情况下,您可以从gems(即,gems)创建或使用电子邮件验证程序

因为您只需调用
self.email.match
方法。如果您想验证文件,您应该使用或创建验证器


在您的情况下,您可以从gems(即,gems)创建或使用电子邮件验证程序

因为您只需调用
self.email.match
方法。如果您想验证文件,您应该使用或创建验证器


在您的情况下,您可以从gems(即,gems)创建或使用电子邮件验证程序

那会发生什么呢?它的工作原理和它写的一模一样。如果模型保存无效,是否要阻止它?应该发生什么?它的工作原理和它写的一模一样。如果模型保存无效,是否要阻止它?应该发生什么?它的工作原理和它写的一模一样。如果模型保存无效,是否要阻止它?应该发生什么?它的工作原理和它写的一模一样。如果模型保存无效,是否要阻止模型保存?啊,谢谢。。。我需要做一个自定义验证器。这很有道理。我错误地认为创建前和保存前回调正在验证。。。但它们显然不是。请仔细阅读并修复它。啊,谢谢。。。我需要做一个自定义验证器。这很有道理。我错误地认为创建前和保存前回调正在验证。。。但它们显然不是。请仔细阅读并修复它。啊,谢谢。。。我需要做一个自定义验证器。这很有道理。我错误地认为创建前和保存前回调正在验证。。。但它们显然不是。请仔细阅读并修复它。啊,谢谢。。。我需要做一个自定义验证器。这很有道理。我错误地认为创建前和保存前回调正在验证。。。但它们显然不是。仔细阅读并修复它。
test "if a user has an invalid email, cannot be saved" do
    user = build(:user)
    user1 = build(:user, email: "here@here@here")
    user2 = build(:user, email: "here.here@here")

    assert user.save
    refute user1.save
    refute user2.save
  end