了解ruby on rails验证文档

t1qtbnec  于 2023-06-22  发布在  Ruby
关注(0)|答案(1)|浏览(169)

我正在创建一个Rails应用程序。
我正在编写一个模型,并希望添加一些验证。
从文档中我看到这样做是可行的

  1. class Person < ApplicationRecord
  2. validates :terms_of_service, acceptance: { message: 'must be abided' }
  3. end

我正在尝试理解这里的validates方法。
在更一般的层面上,我想更好地理解Rails文档。
我的理解是validates是ApplicationRecord::Base的一个类方法。可以将其与各种参数和选项一起重用。我找到的最好的文档是this
我不明白在哪里可以找到所有验证选项和参数的列表。
在这种情况下

  • 什么是接受?
  • 我在哪里可以找到关于它的描述?
  • 在哪里可以找到所有其他可能的validation参数的列表?

如果有任何关于如何更好地理解ruby on rails文档的提示,我们将不胜感激。

jchrr9hc

jchrr9hc1#

  1. validates :terms_of_service, acceptance: true

acceptanceMap到默认的rails验证器AcceptanceValidator
https://github.com/rails/rails/blob/main/activemodel/lib/active_model/validations/acceptance.rb
示例中列出了所有默认验证器:

  • https://www.example.com api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates*
  1. absence
  2. acceptance
  3. confirmation
  4. exclusion
  5. format
  6. inclusion
  7. length
  8. numericality
  9. presence

以及由ActiveRecord添加的其他验证器:

  1. associated
  2. uniqueness

https://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html
每个validaror的可用选项在这里的helper方法中有记录:
https://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html

  1. validates :terms_of_service, acceptance: true
  2. # is the same as using a helper method
  3. validates_acceptance_of :terms_of_service
  4. # and both map to rails default `AcceptanceValidator`

您也可以使用自定义验证器:

  1. validates :terms_of_service, terms: true # maps to `TermsValidator`
  2. # because there is no TermsValidator class in rails, you have to define it
  3. # class TermsValidator
  4. # # TODO: see docs for examples of custom validators
  5. # end
  • https://www.example.com guides.rubyonrails.org/active_record_validations.html#performing-custom-validations*
展开查看全部

相关问题