2011-09-20 4 views
0

私のアプリでは、一部のオブジェクトに対してゴミ箱を実装しようとしています。つまり、「ゴミ箱」という列があり、オブジェクトがゴミ箱になったときに日付に設定されます。ゴミ箱にはインデックスページもあり、ユーザーはオブジェクトを復元できます。「ゴミ箱」をnilに設定します。レールアプリのゴミ箱の実装

私はexamples of models with method trash!を見つけましたが、それは今までのごみ箱に設定され、それは懸念事項で実装されました。しかし、私は本当にto_trashアクションでコントローラを実装する方法を理解していないのですか?コントローラーにも懸念を使う方法はありますか、それともコントローラーにはそれを呼び出すためのアクションとルートが必要ですか?

今私はコントローラーTrashを実装しました。これにはmove_to_trashアクションがあり、すべてのコントローラーがこのアクションを使用しますが、これを行うにはparams trashable_idとtrashable_typeを追加する必要があります。物事をするのは良い方法ですか?

答えて

0

私は最も簡単な実装では、あなたのroutes.rbファイルに以下を追加することができると思い:

match ':controller/:id/trash', :action => :trash 

これは、あなたがすべてのコントローラ上のアクションのゴミを使用できるようになります。より多くの例についてはRouting Rails Guideをご覧ください。

単純な実装は、次のとおりです(モデルをReportとする)。私はここConcernを使用しないでください。

class ReportsController < ApplicationController 
    def trash 
    @report = Report.find(params[:id]) 
    <Do the trashing of report here, you know that already.> 
    # Decide what to do after having called #trash 
    respond_to do |format| 
     format.html { redirect_to(reports_url) } 
    end 
    end 
end 

をあなたがアクションを可能にしなければならない唯一のいくつかのコントローラを持っている場合、代わりに、一人一人にそれを追加するのは、おそらく各コントローラのための特別なルートルールを追加する方が簡単です。そして、それを超えるステップを進めたいなら、ミックスインでゴミ箱アクションを実装し、それを入れたいコントローラにミックスすることができます(いいえ、実装しません)。

+0

はい、私はこのアクションを持つコントローラしかありません。あなたの最後の提案が最高だと思います。私はこのようなことをしたいと思っていました。しかし、あなたはアドバイスをより明確にすることができますか?モデルにはまだ懸念があるのでしょうか、それとも必要ではありませんか?ミックスインはどうですか?別々のルートがありますか? –

+0

助けてくれてありがとう –

関連する問題