我有一個簡單的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