0

내 응용 프로그램에서는 ActiveModel 유효성 검사가 전혀 실행되지 않는 것으로 보입니다. 즉, 데이터가 실제로 무효 임에도 불구하고 항상 true (유효한) 값을 반환합니다.Rails3/Mongoid 유효성 검사 실행 안 함

ruby-1.9.2-p290 :028 > QueueItem.validators 
=> [#<ActiveModel::Validations::PresenceValidator:0x007f8303adb190 @attributes=[:user], @options={:allow_blank=>false, :allow_nil=>false}>, #<ActiveModel::Validations::LengthValidator:0x007f8303ee5a60 @attributes=[:notes], @options={:minimum=>2, :allow_blank=>false}>] 
ruby-1.9.2-p290 :029 > qi = QueueItem.new 
=> #<QueueItem _id: 4edf5a0535be359a79000004, _type: nil, created_at: nil, updated_at: nil, user_id: nil, appointment_time: nil, notes: nil, called: false, visited: false, rejected: false> 
ruby-1.9.2-p290 :030 > qi.notes = "x" 
=> "x" 
ruby-1.9.2-p290 :031 > qi.valid? 
=> true 

검증이 같은 모델에 등록되는 사실 것 같다 :

다음
class QueueItem 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    belongs_to :user 

    field :appointment_time, type: DateTime, allow_nil: true 
    field :notes, type: String, allow_nil: true 
    # field :position, type: Integer, default: 0 

    validates :user, presence: true, allow_blank: false, allow_nil: false 
    validates_length_of :notes, :minimum => 2, allow_blank: false 
end 

, 저장하거나 잘못된 데이터와 기록을 확인하려고, 이것은 당신이 무엇을 얻을 QueueItem.validations으로 표시됩니다. 그렇다면 왜 그들은 언제나 사실로 돌아 옵니까? 이것은이 모델뿐만 아니라 내 응용 프로그램의 모든 모델에서 발생합니다.

UPDATE 나는 사용자 지정 유효성 검사기를 추가하고 성공적으로 발사된다. 내가 model.valid?를 호출 할 때

validate :test_validation 

def test_validation 
    logger.info ":test_validation has fired" 
    self.errors[:base] << "Something is royally screwed!" 
end 

지금, 그것은 false을 반환하고, 해당 메시지 로거 출력. 사용자 정의 유효성 검사기는 실제로 객체에 오류를 추가하고 false를 반환합니다. 여전히 표준 액티브 모델이 실행되지 않는 이유를 명확히 밝히지 않았습니다. 이것들을 추적 할 방법이 있습니까?

+0

이상한, 왜 이런 일이 일어날 지 모르겠다. –

답변

1

따라서 locals/en.yml 파일에 errors: 섹션 아래에 손상된 문자열이 있음이 드러났습니다.