devise 提供哪些开箱即用的验证? (以及它们位于何处)

What validations does devise provide out of the box? (and where are they located)

我认为设计为用户 email 提供了 uniqueness: true 验证(虽然我不确定在哪里)。

我在 config/initializers/devise.rb

中发现了这个(近似)电子邮件验证正则表达式
  # Email regex used to validate email formats. It simply asserts that
  # one (and only one) @ exists in the given string. This is mainly
  # to give user feedback and not to assert the e-mail validity.
  config.email_regexp = /\A[^@\s]+@[^@\s]+\z/

以及在同一文件中验证密码长度:

  # ==> Configuration for :validatable
  # Range for password length.
  config.password_length = 6..128

问题

devise 是否提供任何其他开箱即用的验证,如果有,我在哪里可以找到它们?

NB 想知道的唯一原因是我可以在 models/user.rb 中编写任何额外的验证并且我想保持代码干燥。

email 的唯一验证在数据库级别 https://github.com/heartcombo/devise/blob/81bf3ad8c1e3812448ba4588598493c8e80ecf10/lib/generators/active_record/templates/migration.rb#L15

在 运行 之后,您应该在 schema.rb 中看到设计生成器和迁移:

t.index ["email"], name: "index_users_on_email", unique: true

初始设计生成器将提供这些开箱即用的唯一索引:

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true

此处列出了其他设计验证 https://github.com/heartcombo/devise/blob/81bf3ad8c1e3812448ba4588598493c8e80ecf10/lib/devise/models/validatable.rb#L19-L44