2012-12-13 10 views
0

상품 모델에 대한 몇 가지 기본 유효성 검사가있는 간단한 CRUD 앱이 있습니다. 시험 합격. 이제 필자는 공백이 없거나 이름에 대해 하나 이상의 단어가없는 것에 대해 테스트해야합니다. 나는 아래 콘솔을 콘솔에서 테스트했으며 작동하는 것처럼 보였으므로 유효성 검증에 대한 레일 가이드를 읽으면서 아래에 사용자 정의 유효성 검사를 작성했습니다. 불행히도 내 테스트를 실행하면 모두 실패합니다. 왜냐하면 내가 작성한 사용자 정의 유효성 검사로 인해 실패하기 때문에 상품을 만들 수 없기 때문입니다. validates 호출에 결합하여 Railscasts # 211부터 시작하는 유효성 검사기를 여러 가지 방법으로 조합 해 보았습니다. 아마도 단순한 것이지만 유효성 검사기를 호출하면 다른 기본 테스트가 통과됩니다. 오류는 다음과 같습니다 검증 실패 : 이름이 하나의 단어해야합니다 (액티브 :: RecordInvalid)레일 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, 샘

답변

0

이 발생하면이 '스톰'은 이전 오이 던지는 오류로 인해 나타납니다 이 경우 기본 오류입니다. 덕분에 @ 012nd= 1을! = 1로 바꾸면이 테스트가 통과하고 이전 테스트도 통과하게됩니다. 나는 그것이 루비의 반성인지 또는 이전의 통과 테스트가 오류를 일으키는 지, 나는 무지에서 말하고 있는지 모른다. 나는 오이가 적어도 진짜 원인을 오도하는 오류를 던질 것이라는 것을 알고 있습니다.

관련 문제