什么是保存草稿post的RESTful方式?

我在一个小型测试网站上有一个post控制器。 我希望在网站上有一个“保存草稿”/组合自动保存function,因为该网站会有很长的post,用户可能想要离开并返回完成。 但是,我从未在(或任何应用程序)之前将自动保存/保存function构建到Rails应用程序中。 什么是好的,RESTful方式呢?

这是我当前的控制器操作:

posts_controller.rb

def create @post = params[:post] if @post.save flash.now[:success] = "Post created!" else render_errors_now(@post) end respond_to do |format| format.html {redirect_to Discussion.find(session[:discussion_id])} format.js end end 

如您所见,用户远程发布。

这是当前的post.rb模型:

  attr_accessible :content, :title validates :title, :presence => true validate :title_character_length validates :content, :length => { :maximum => 10000 } validates :user_id, :presence => true validates :discussion_id, :presence => true belongs_to :user belongs_to :discussion default_scope :order => 'posts.created_at ASC' def title_character_length #some code that checks length end 

我需要从这段代码中完成以下内容。

  1. 定期自动保存(可能每隔1分钟)
  2. 提供保存草稿的选项
  3. 选择要运行的validation:我希望允许用户保存标题超出允许长度的草稿,同时不允许用户实际发布带有该标题的post。

我也很好奇什么是保存草稿的好Rails实践:我应该在post模型中添加属性“草稿”吗? 或者创建草稿post模型?

如果我需要提供更多信息,请评论。 我很想听听别人的意见! 感谢大家!

自动保存:

的application.js

 $(document).ready(function() { setInterval(function() { $('form[data-remote]').submit(); }, 1000*60); // 1000ms * 60s = 1m }); 

然后,您需要有一个update.js.erb来处理消息(例如,“已保存”)。

对于草稿,我会制作一个单独的模型, PostDraft 。 自动保存将保存PostDraft对象,然后一旦他们点击“发布”或其他任何内容,它将创建一个新Post并删除PostDraft 。 此方法还允许用户拥有超过限制的标题,只需将该validation放在PostDraft模型上即可。 如果你在Post模型中使用“draft”布尔值完成所有操作,那将会更加困难。