상품 모델에 대한 몇 가지 기본 유효성 검사가있는 간단한 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, 샘