2011-02-11 2 views
0

나는 프로젝트를위한 간단한 메시지 시스템을 만들고있다. REST 가이드 라인을 준수하려고합니다. 지금은 MessagesController 7 개 편안하고 방법과 정의비공개 메시지 : 회신/미리보기/초안 컨트롤러 작업을 중단하는 방법은 무엇입니까?

class Member << AR::Base 
    has_many :sent_messages, :class => 'Message', :foreign_key => :sender_id 
    has_many :received_messages, :class => 'Message', :foreign_key => :recipient_id 
end 

class Message << AR::Base 
    belongs_to :sender, :class_name => 'Member', :foreign_key => :sender_id 
    belongs_to :recipient, , :class_name => 'Member', :foreign_key => :recipient_id 
end 

:

나는 다음과 같은 모델을 가지고있다. 나는 새로운 (폼을 렌더링하기 위해) 메소드를 사용하고 (실제로 msg를 보내기 위해) 메소드를 사용하여 새로운 메세지를 보낼 수있다.

질문 :

  1. 어떻게 REST와 응답 기능을 처리하는? 나는 회신이라고하는 다른 메서드를 추가했지만 new()와 같이 작동하여 양식을 렌더링하고 create()에도 제출합니다. 더 좋은 방법이 있습니까?
  2. 메시지 미리보기 기능? 다른 작업을 추가 하시겠습니까? 새 컨트롤러?
  3. 초안 메시지 저장 처리 방법 (recipient_id가 지정되지 않음)? MessagesController에서 create method를 재사용해야합니까?

제안 사항이 없습니다. 미리 감사드립니다.

답변

1

초안은 아직 전송되지 않은 메시지이며 완료되지 않았을 수 있습니다.

부울 속성 'sent'를 메시지에 추가하는 것이 좋습니다. 'sent = false'를 사용하여 객체를 저장하면 부분 검증 만 실행합니다 (존재하는 경우). 이렇게하면 '초안 저장'문제를 처리했습니다.

'sent = true'로 메시지를 저장하면 전체 유효성 검사를 실행하고 데이터베이스에 개체를 저장 한 다음 실제로 보내면됩니다.

'보내기'와 같은 다른 단어로 '작성'방법에 대해 생각하지 마십시오. 메시지를 보낼 수있는 상태로 저장하면 메시지를 보냅니다. 사용자가 메시지를 만들 때 또는 업데이트 할 때 준비 상태로 표시할지 여부는 중요하지 않습니다. 모델 수준에서 처리하십시오.

메시지를 읽는 것만으로 '미리보기'의 기능이 어떻게 다른가요? 표준 GET /messages/1은 정상입니다.

답장에 대해서. 답장은 무엇입니까? 미리 정의 된 일부 필드가있는 새 메시지를 만드는 것입니다. :new 작업에서 추가 매개 변수를 인식하고 다음과 같이 모든 관련보기에 링크를 표시하십시오.

<a href="/messages/[email protected]&amp;in-reply-to=&lt;1234...&gt;">Reply</a> 
관련 문제