ruby – ActiveModel ::匿名类的验证

前端之家收集整理的这篇文章主要介绍了ruby – ActiveModel ::匿名类的验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用一个像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
原文链接:https://www.f2er.com/ruby/266182.html

猜你在找的Ruby相关文章