2010-01-27 5 views
0

나는 has_many Revisions라는 모델 아티클을 가지고 있습니다. 수정본에는 본 조항에 대한 모든 정보를 저장하는 다양한 열이 있습니다. 아티클은 또한 현재 선택된 개정의 기본 키인 current_revision을 소유합니다. 각 개정판은 작성된 후에 절대로 변경되지 않습니다.ActiveRecord를 사용하여 Wiki의 수정본을 처리하는 방법은 무엇입니까?

사용자가 기사를 편집 할 때 개정판에있는 모든 필드를 표시하고 current_revision의 해당 정보로 미리 채워진 양식을 표시하고자합니다. 간단하지만 사용자가 save 할 때마다 각 필드를 current_revision의 값과 비교하려고합니다. 모든 입력란이 같으면 아무 것도하지 않고 양식 게시를 삭제합니다. 그러나 필드가 다르면 이전 개정판에 쓰는 대신 새 개정판을 작성하려고합니다.

개정판의 각 필드에 대한 테스트를 수동으로 하드 코딩하지 않고 필드가 변경되었는지 어떻게 감지합니까?

답변

2

액티브 레코드의 변경을 감지하는 방법이 내장되어 있습니다.

API에 추적 변경 사항에 대한 좋은 자료가 있습니다 : http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html.

귀하의 경우에는 기사에서 어떤 입력란이 변경되었는지 감지하고 그로부터 새 개정판을 작성하는 것만으로도 충분합니다. 의 라인을 따라

뭔가 :

article= Article.find(id) 
article.attributes = params[:article] 
if article.changed? 
    //new revision 
end 
+0

덕분에, 나는 그 방법에 익숙하지 않았다. 특정 필드가 제출되지 않았 음을 감지하는 좋은 방법이 있습니까 (예 : 양식에 "확장 정보 있음"확인란이 있고 자바 스크립트로 행을 표시/제거함). 매개 변수가없는 필드 사용 해당 필드를 0으로 설정 하시겠습니까? –

관련 문제