いくつかの類似した特性を持ついくつかのmodels-views-controllersを備えたRailsアプリケーションがあります。たとえば、5つの異なるモデルにコメント、投票、またはタグ付けできます。また、外部プラグインを多用しています。
現時点では、コメント、投票、タグなどを1つのモデル(およびそのビューとコントローラー)にのみ導入しました。ただし、結果に満足しているので、あるモデルの特定のMVCからこの共通の機能を切り取り、他のすべてのモデルからアクセスできるようにします。
私がこれを始める前のいくつかの質問(そして多分いくつかの一般的なアドバイスも素晴らしいでしょう):
1-どうすればいいですか?「lib」ディレクトリにモジュールを作成し(ミックスインクラスと同じですか?)、再利用可能なビューコードを一般的なパーシャルに移動することを考えていました。コントローラコードはどうですか?
2-最初のモデルのコーディング中にRubyonRailsを学んでいたので、コントローラーに一連のメソッドを追加する方法がおそらく間違っていました。コメントを追加する(addcomment)、投票を追加する(addvote)などのメソッドがあります。これらのメソッドはすべて、:collectionを介した非標準(非RESTful)ルーティングを必要とします。私が理解していることから、正しい方法は、コメントコントローラー機能を独自のコントローラーに移動し、標準のRESTfulルートを介してアクセスすることです。これは私がすべきことですか?
3-多くのプラグイン(例:act_as_commentable)は、モジュールを明示的にロードする必要はなく、モデルのどこかに「act_as_commentable」という行をロードするだけです。共通の機能にこのようなものを使用できますか?それはどのように機能しますか?