私が作成している小さなテストWebサイトに投稿コントローラーがあります。サイトには「ドラフトの保存」/combo-auto-save機能が必要です。これは、ユーザーが離れて終了するために戻ってくる可能性のある長い投稿がサイトにあるためです。ただし、これまで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分間隔)
- 下書きを保存するオプションを与える
- 実行する検証を選択します。たとえば、ユーザーが許可された長さを超えるタイトルのドラフトを保存できるようにし、そのタイトルの投稿を実際に投稿できないようにします。
また、ドラフトを保存するためのRailsの優れた方法についても興味があります。投稿モデルに属性「ドラフト」を追加する必要がありますか?または、ドラフト投稿モデルを作成しますか?
さらに情報を提供する必要がある場合は、コメントしてください。人々の意見を聞いてみたいです!みんな、ありがとう!