1

您应该如何找到可以传递给 Rails 方法的不同选项?例如,我想知道我可以传递给validates. 我在文档中找不到它们。

4

3 回答 3

0

如您所知,不可能在签名中记录哈希选项,因此您必须依赖文档的质量或阅读源代码。

在这种情况下,文档显示了一些几乎涵盖所有默认验证器的示例。请注意,它不能记录所有可用的,因为它们可以动态扩展。

>> ActiveModel::EachValidator.descendants
=> [Paperclip::Validators::AttachmentSizeValidator, ActiveModel::Validations::WithValidator, ActiveModel::Validations::ExclusionValidator, ActiveRecord::Validations::AssociatedValidator, ActiveModel::Validations::ConfirmationValidator, ActiveModel::Validations::PresenceValidator, ActiveModel::Validations::FormatValidator, Paperclip::Validators::AttachmentContentTypeValidator, Paperclip::Validators::AttachmentPresenceValidator, ActiveRecord::Validations::UniquenessValidator, ActiveModel::BlockValidator, ActiveModel::Validations::NumericalityValidator, ActiveModel::Validations::AcceptanceValidator, ActiveModel::Validations::InclusionValidator, ActiveModel::Validations::LengthValidator]

或者:

ActiveModel::EachValidator.descendants.map { |klass| klass.name.split("::").last.sub(/Validator$/, '').underscore }
 => ["attachment_size", "with", "exclusion", "associated", "confirmation", "presence", "format", "attachment_content_type", "attachment_presence", "uniqueness", "block", "numericality", "acceptance", "inclusion", "length"]
于 2013-02-17T11:48:37.067 回答
0

api dock 很有用,它还显示了源代码http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates

于 2013-02-17T11:42:08.973 回答
0

起点始终是官方 Rails 文档。例如,这里是该validates方法的文档。

但是,请记住,Rails 是一个不断发展的框架。不幸的是,这意味着并非所有方法都有完整的文档记录,有时您需要直接深入研究源代码以了解方法的工作原理。

于 2013-02-17T12:54:34.047 回答