我正在为一个项目开发一个简单的消息系统。试图坚持REST准则。
我有以下型号:
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
现在我使用7个RESTful方法定义了MessagesController。我可以使用new(渲染表单)和创建(实际发送msg)方法发送新消息。
问题:
对任何建议持开放态度。提前谢谢。
答案 0 :(得分:1)
草稿只是一条尚未发送的消息,可能还没有完成。
我建议你在邮件中添加一个布尔属性'sent'。如果使用'sent = false'保存对象,则只运行部分验证(如果有的话)。这样,您就处理了“保存草稿”问题。
如果使用'sent = true'保存邮件,则运行完整验证,将对象保存在数据库中并实际发送。
不要将'create'方法视为等于'send'的其他单词。当您将消息保存在允许发送的状态时,您将发送消息。用户在创建消息或更新消息时是否将消息标记为就绪并不重要。在模型级别处理它。
只需阅读邮件,'预览'的功能有何不同?标准GET /messages/1
应该没问题。
关于回复。回复是什么?它只是创建一个预定义字段的新消息。让您的:new
操作识别其他参数,并在所有相关视图上显示链接,如下所示:
<a href="/messages/new?to=john@example.com&in-reply-to=<1234...>">Reply</a>