我正在为一个社交网络平台实现一种类似于Facebook的消息系统,灵感来自于这个教程: http://www.novawave.net/public/rails_messaging_tutorial.html。
我已经实现了基本的发送消息功能,现在想让用户能够保存草稿以便日后发送。
当创建一条消息时,在我的消息模型的before_create方法中,它会为每个收件人创建该消息的副本。
我希望在before_create回调中传递参数,以便确定是否将消息副本构建给收件人或仅将其保存为草稿,从而可以在不更改模型的情况下使用相同的方法。 我考虑跳过此特定情况的回调,但无法理解如何做到这一点。
以下是创建新消息的视图: <% form_for @message, :url => {:controller => "sent", :action => "create"} do |f| %>
我已经实现了基本的发送消息功能,现在想让用户能够保存草稿以便日后发送。
当创建一条消息时,在我的消息模型的before_create方法中,它会为每个收件人创建该消息的副本。
to.each do |recipient|
recipient = User.find(recipient)
message_copies.build(:folder_id => recipient.inbox.id, :recipient_id => recipient.id, :read => false)
end
我希望在before_create回调中传递参数,以便确定是否将消息副本构建给收件人或仅将其保存为草稿,从而可以在不更改模型的情况下使用相同的方法。 我考虑跳过此特定情况的回调,但无法理解如何做到这一点。
以下是创建新消息的视图: <% form_for @message, :url => {:controller => "sent", :action => "create"} do |f| %>
<select name="message[to][]" multiple="multiple">
<%= options_from_collection_for_select(User.find(:all), :id, :login, @message.to) %>
</select>
<p>
Subject: <%= f.text_field :subject %>
</p>
<p>
Body:
<br />
<%= f.text_area :body %>
</p>
<p>
<%= submit_tag "Send", :name => 'do_send' %>
<%= submit_tag "Save", :name => 'save_draft' %>
</p>
<% end %>
有什么建议吗?
谢谢
编辑:更多代码!