【问题标题】:What validations does devise provide out of the box? (and where are they located)设计提供了哪些开箱即用的验证? (他们在哪里)
【发布时间】:2021-01-30 17:45:36
【问题描述】:

我认为 devise 为用户 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 中编写任何其他验证,并且我想保持代码干燥。

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-6


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多