未知验证器:RubyonRails上的“InValidator”
我正在关注Ruby on Rails的官方入门指南。该指南提供了以下代码来向关注点添加状态验证:
module Visible
extend ActiveSupport::Concern
included do
VALID_STATUSES = ['public', 'private', 'archived']
validates :status, in: VALID_STATUSES
end
def archived?
status == 'archived'
end
end
但是我收到以下错误:Unknown validator: 'InValidator'在线validates :status, in: VALID_STATUSES。我正在使用 Rails 6.1.0 并完全遵循此版本的指南。这里有什么问题?
编辑
我做了一个小的改变以使其工作:validates :status, inclusion: { in: VALID_STATUSES }. 但我想知道为什么in不像指南中那样工作。
回答
该指南似乎是错误的,您将其更改inclusion: { in: [] }为正确的解决方案是正确的。
Rails 存储库中已经合并了一个修复程序,但似乎尚未部署。
为了添加一些背景信息,它是如何工作的,Rails中的实现确实实例化了称为 InclusionValidator的验证器类。