2016-07-07 3 views
0

@item 인스턴스에서 ActiveModel::Validations#valid?을 호출하면 오류 메시지가 제거됩니다. 이는 예제를 통해 가장 잘 나타납니다. 나는 검증 라이브러리를 포함하고 내 모델 클래스에서레일즈가 왜 invalid로 전화를 걸고 있습니까? 내 오류 메시지 제거

[1] pry(#<ChangeObjectsController>)> @item.errors.add(:new_error, "new error has occurred") 
=> ["new error has occurred"] 
[2] pry(#<ChangeObjectsController>)> @item.errors.full_messages 
=> ["Connection error has occurred", "New error new error has occurred"] 
[3] pry(#<ChangeObjectsController>)> @item.valid? 
=> true 
[4] pry(#<ChangeObjectsController>)> @item.errors.full_messages 
=> [] 

(노트는ActiveRecord::Base에서 상속하지 않음) :

include ActiveModel::Validations 
    extend ActiveModel::Naming 

오류 메시지가 이런 식으로 추가됩니다 사람은 선명도를 제공 할 수 이 문제에 대한? 예를 들어,이 원하는 동작 및 나는 그것을 잘못 사용하고 있습니까?

+0

'pry' 보석을 사용하는 데 문제가 없다고 확신합니까? – Aleksey

+0

네, 제 이해합니다. 예를 들어, 사용하지 않을 때의 행동은 같습니다. 즉, 오류가 예상대로 표시되지 않습니다. 하지만 유효한 전화를 끊을 때? 오류가 예상대로 나타납니다. –

답변

2

이것은 정상적인 동작입니다. valid?이 true를 반환하지만 오류 메시지가있는 경우 일관성이 없습니다. rails source에서 valid?이 오류 메시지를 명시 적으로 지울 수 있음을 알 수 있습니다.

정상적인 방법으로 오류 메시지를 추가하는 방법은 유효성 검사 (built-in) 또는 사용자 정의 (custom) 중 하나를 사용하는 것입니다.

+0

고맙습니다. 매우 도움이되었습니다. 내가 그걸 알지 못 했어? 명시 적으로 오류 메시지를 지 웁니다. –

관련 문제