2014-07-01 1 views
0

에 따라 콘텐츠 검증의이 같은 포스트 모델이 있다고 가정 해 봅시다 :레일 - 상태

class Post < ActiveRecord::Base 
    ....... 
    ....... 
end 

그것은이 두 속성 : 제목: 몸.

이제 포스트 객체가 여러 단계를 통해 갈 수

: '초안' -> '출판'.

이제 초안 모드에서 게시물을 저장하는 동안 : 제목은 필요하지 않습니다.

이제
validates_presence_of :title 

, 레일에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까 : 게시 모드로 저장하는 동안, 그것은 제목의 존재 확인을 가질 필요가? 데코레이터 패턴의 일부 구현은 컨트롤러에서 활성 레코드 객체에 유효성 검사를 동적으로 추가하는 방식으로 훌륭하다고 생각합니다.

이것은 내가 가진 더 큰 문제의 단순화 된 버전입니다. 실제로는 관련 객체에서 수행 된 검증을 포함하여 훨씬 더 많은 검증이 있습니다.

답변

0

상태 전환에 state_machine을 사용하는 경우에는 readme 파일의 예와 함께 원하는 내용 만 지원합니다.

그렇지 않으면 모든 레일 검증에 옵션 if 매개 변수가 있습니다. 예를 들어 게시물에 게시 된 상태인지 여부를 반환하는 published? 메서드가있는 경우 validates_presence_of :title, if: :published?으로 작성하고 필요한 작업을 정확하게 수행 할 수 있습니다.

+0

감사합니다. 나는 주들에 [aasm] (https://github.com/aasm/aasm)을 사용하고있었습니다. state_machine으로 전환 할 때가 있습니다. –

+0

아직 스위치를 서두르지 마십시오. state_machine이 더 많이 사용되지만 더 이상 활발하게 개발되지는 않습니다. –

+0

아 맞아. 제 경우에는 상태 변경시 연관된 모델의 유효성을 검사해야합니다. 어떻게해야합니까? –

관련 문제