我正在开发一个类似于 DataMapper 的小型 ODM 项目,并且正在尝试使用该ActiveModel::Validations
组件。但是,我在编写测试时遇到了一个问题——我正在使用匿名类来构建我的测试模式,但是在运行验证器时,ActiveModel::Name
该类抛出了一个错误:
Class name cannot be blank. You need to supply a name argument when anonymous class given
这是一个简单的代码示例来重现:
require 'active_model'
book_class = Class.new do
include ActiveModel::Validations
validates_presence_of :title
def title; ""; end # This will fail validation
end
book_class.new.valid? # => throws error
仅当验证器失败时才会引发异常 - 我猜当它尝试构造验证错误消息时会发生问题。所以我的问题是:
- 我做了很多搜索,但找不到任何人试图做类似的事情。这对 ActiveModel 来说是不可能的,还是有我不知道的解决方法?