ruby – ActiveModel ::匿名类的验证
发布时间:2020-12-16 22:18:30 所属栏目:百科 来源:网络整理
导读:我正在使用一个像DataMapper这样的ODM项目,我正在尝试使用ActiveModel :: Validations组件.但是,我在编写测试时遇到了一个问题 – 我正在使用匿名类来构建我的测试模式,但是在运行验证器时,ActiveModel :: Name类会抛出错误: 类名不能为空.在给出匿名类时,
我正在使用一个像DataMapper这样的ODM项目,我正在尝试使用ActiveModel :: Validations组件.但是,我在编写测试时遇到了一个问题 – 我正在使用匿名类来构建我的测试模式,但是在运行验证器时,ActiveModel :: Name类会抛出错误:
类名不能为空.在给出匿名类时,需要提供一个名称参数 以下是一个简单的代码示例: 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,或有没有解决方法我不知道? 解决方法
ActiveModel尝试在设置错误消息时获取模型名称(如您所见).绕过它的最快捷方式(不给给你的匿名类一个名字)是给你的类一个类方法model_name,返回一个ActiveModel :: Name的实例.
例如 require 'active_model' book_class = Class.new do include ActiveModel::Validations def self.model_name ActiveModel::Name.new(self,nil,"temp") end validates_presence_of :title def title; ""; end # This will fail validation end book_class.new.valid? # => no error (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |