我有一个简单的CRUD应用程序,其中包含商品模型的一些基本验证。那些通过的测试。好的,现在我需要测试一下没有空格,或者多于一个单词的名字。我在控制台中测试了下面的内容,它似乎可以正常工作,因此在导轨上阅读了我在下面编写了自定义验证的验证。不幸的是,运行我的测试,现在都失败了,因为它无法创建商品,因为它由于我写的自定义验证而失败。我已经尝试了许多不同的组合方式,将验证器从Railscasts#211开始,并将其组合到validates调用中。这可能是一件简单的事情,但如果我拔出对验证器的调用,那么其他基本测试就会通过。错误是:验证失败:产品名称必须是单个字(的ActiveRecord :: RecordInvalid)Rails 3自定义验证器'stomps'现有验证
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
日Thnx,SAM