我有一个简单的CRUD应用程序,其中包含商品模型的一些基本验证。通过测试。好的,现在我需要测试没有空格,或者名字不止一个单词。我在控制台中对下面进行了测试,它看起来很有效,所以在轨道上阅读有关验证的指南我在下面写了一个自定义验证。不幸的是,运行我的测试,现在都失败了,因为它无法创建商品,因为它由于我写的自定义验证而失败。我尝试了许多不同的组合,将Railscasts#211开始的验证器合并到验证调用中。这可能是一些简单的事情,但是如果我把调用器拉出来,那么其他的基本测试就会通过。错误是:验证失败:名称必须是单个单词(ActiveRecord :: RecordInvalid)
require_relative 'commodity_name_validator'
class Commodity < ActiveRecord::Base
attr_accessible :description, :name
has_many :prices
before_save { |commodity| commodity.name.capitalize! }
validates :name, presence: true, length: { minimum: 4 }
validate :commodity_name_validations
end
class CommodityNameValidator < ActiveModel::Validator
def validate(record)
if record.name.split(" ").length <= 1
record.errors[:base] << "Name must be a single word"
end
end
end
答案 0 :(得分:0)
看来这个'stomp'是由于黄瓜在这种情况下遇到基本错误时更早出现错误。感谢@jorendorff指出将我的&lt; = 1替换为!= 1使得此测试通过,并且之前也通过了。我不知道这是不是红宝石的反射,也不知道是什么造成了之前通过测试的错误,我说的是出于无知。我只知道黄瓜,至少会抛出误导真正原因的错误。