2011-12-19 3 views
0

初心者のご質問に申し訳ありません:別のアセットタイプ(ドキュメント、動画など)を持つプロジェクトがあります。別のアセットを追加したいのですがビデオと同じ機能を持つオーディオ用です。モデル/コントローラ/ビュー/テーブルを「ビデオ(複数可)」から「オーディオ(複数可)」に簡単に複製できる方法はありますか?異なるアセットタイプのモデル/コントローラ/ビュー全体を複製する方法

+1

DRY :-)それほど似ている場合、同じMVCを使用しないのはなぜですか?別のテーブルが必要な場合は、一方のモデルでもう一方のモデルを拡張し、そのテーブル名を指定することができます... – aishwarya

+0

これらの機能をパッケージ化するモジュールを作成してみませんか?または、継承を使用するだけです。また、あなたが幻想的な行動を感じるなら、メタプログラミングの余分なトッピングを伴う継承さえも...それは本当にあなた次第で、達成しようとしていることです。あなたが紛失してしまった場合、ちょうどデザインパターンに関するいくつかの研究を行います(私はこのトピックでAddison Wesleyの "ルビーのデザインパターン"の本を見つけました) –

答えて

0

Moduleを書くことができますActiuveSupport::Convernモデルに必要なすべてのメソッドが含まれていますincludeあなたのモジュールに含まれているメソッドでモデルを拡張するモデルのモジュールです。このように:

module AwsomeModule 
    include ActiveSupport::Concern 
    module ClassMethods 
      # awesome class methods here 
    end 
    module InstanceMethods 
      # awesome instance methods here 
    end 
end 

次にモデルには単にモジュールが含まれています。あなたの部分Cannのアクセスに続いて

render 'layouts/awesome_partial', :object => @instance_var, :as => :data 

変数dataを使用して、指定されたオブジェクトを:ビューのためには、このようなobjectasオプションを経由してパーシャルを使用し、それらにオブジェクトを与えることができます。

関連する問題