首页 > 解决方案 > 为什么 ActiveModel::Errors.new(self) 不适用于长度,而是使用计数和大小方法?

问题描述

当我ActiveModel::Errors在 Rails 5 中使用并在count, length,size方法中进行了一些比较时,我发现

ActiveModel::Errors.new(self).count  ==> 0 #result

ActiveModel::Errors.new(self).length ==> undefined method `length' #error

ActiveModel::Errors.new(self).size   ==> 0 #result

我试图找到原因,但我找不到。请帮助我为什么length不工作,但count工作size

标签: ruby-on-rails

解决方案


这是因为ActiveModel::Errors根本没有实现一个名为length.

如果您想Hash从对象中获取 a 以便使用count,lengthsize, 请将ActiveModel::Errors对象转换为Hashusing.to_hash

利用Rails 文档来帮助探索 Rails 中可用的类和实用程序。


推荐阅读