2012-07-12 4 views
0

컨텍스트 : 첨부 된 아바타가있는 사용자 모델이 있습니다 (클립 클립을 통해). 사용자가 생성 될 때 아바타는 필요하지 않지만 사용자가 자신의 아바타를 프로파일에 업데이트 할 때 아바타를 필요로합니다. 사용자가 새 아바타를 업로드하면 아약스 만 아약스 요청을 통해 제출됩니다. file_field가 비어 있으면이 시점에서 유효성 검사 오류를 반환하고 싶습니다.단일 속성 업데이트에만 존재 여부 확인 추가

은 우선은 내가

validates_attachment_presence :avatar, message: "The file is missing", :if => ->{ !new_record? } 

을 사용하지만 예상대로 정확하게 작동하지 않고 내 검증 테스트 스위트가 정상 should be_valid

describe User do 
    before do 
    @user = FactoryGirl.create :user 
    end 

    subject { @user } 

    [...] 

    it { should be_valid } 
end 

에 실패 할 수 있습니다.

어떻게 처리해야합니까? 내가 생각해 낸 유일한 아이디어는 파일 필드가 비어 있지만 해킹하는 것처럼 보이면 @user.errors에서 UserController # update의 새로운 오류를 삽입하는 것입니다.

감사합니다.

답변

1
validates_attachment_presence :avatar, message: "The file is missing", on: :update 

http://guides.rubyonrails.org/active_record_validations_callbacks.html#on

+0

나는이 구문을 모르는, 나는'사용 => update' 대신 (@Kulbir가에 : 예, 그의 대답을 알하지 않고 다윗 '1 게시, 나는 내 대답을 삭제) – citraL

+0

@citraL David가 사용한 것은 새로운 루비 해시 구문입니다. 이 [간단한 예제] (http://www.gaurishsharma.com/2012/04/new-ruby-1-9-hash-syntax.html)를 확인하십시오. –

+0

오프너가 메시지를 사용 중입니다 : "파일이 없습니다"라는 새로운 구문이므로 update 옵션에도 새로운 구문을 사용했습니다. –

관련 문제