了解ruby on rails验证文档

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

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

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

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

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

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

jchrr9hc

jchrr9hc1#

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*
absence
acceptance
confirmation
exclusion
format
inclusion
length
numericality
presence

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

associated
uniqueness

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

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

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

validates :terms_of_service, terms: true # maps to `TermsValidator`

# because there is no TermsValidator class in rails, you have to define it
# class TermsValidator
# # TODO: see docs for examples of custom validators
# end
  • https://www.example.com guides.rubyonrails.org/active_record_validations.html#performing-custom-validations*

相关问题