ruby-on-rails - 理解 ruby on rails 文档

我目前正在创建一个 Rails 应用程序。

我正在编写一个模型并想添加一些验证。

从文档中我看到做这样的事情是可行的

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

我试图在这里理解 validates 方法。

在更一般的层面上,我想更好地理解 Rails 文档。

我的理解是validates是ApplicationRecord::Base的一个类方法。可以使用各种参数和选项重用它。我找到的最好的文档是 https://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates

我不明白在哪里可以找到所有验证选项和参数的列表。

在这种情况下,

  • 什么是接受?
  • 我在哪里可以在文档中找到它的描述?
  • 我在哪里可以找到所有其他可能的验证参数的列表?

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

回答1

validates :terms_of_service, acceptance: true

acceptance 映射到 AcceptanceValidator 这是一个默认的 rails 验证器:

https://github.com/rails/rails/blob/main/activemodel/lib/active_model/validations/acceptance.rb

示例中列出了所有默认验证器:

https://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

每个验证器的可用选项都记录在此处的辅助方法中:

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://guides.rubyonrails.org/active_record_validations.html#performing-custom-validations

相似文章

最新文章